ロードブロッキングを打ったことがあります。最初に特定の番号に達した行を返す(ポストグル)
コンテキストは次のように顧客のポイントが未収と私は、テーブルを持っているのPostgreSQL 9.5.8
を使用しています。表には、顧客ごとに複数の行があります(イベント表など)。すなわち、顧客1は1つのアイテムを購入し、1つの行である10ポイントを獲得し、次に別の日にこれらのポイントのいくつかを費やし、別の行である5ポイントを残してから別のアイテムを購入し、他の行として表示される15までです。小数点以下の行にはそれぞれcreated_at
の列があります。
例表:
Customer ID created_at no_points row
123 17/09/2017 5 1
123 09/10/2017 8 2
124 10/10/2017 12 3
123 10/10/2017 15 4
125 12/10/2017 12 5
126 17/09/2017 6 6
123 11/10/2017 11 7
123 12/10/2017 9 8
127 17/09/2017 5 9
124 11/10/2017 5 10
125 13/10/2017 5 11
123 13/10/2017 12 12
Iは、顧客が特定の閾値、すなわち> = 10ポイントに到達する最初の時間を追跡します。 10ポイントを超えているかどうかは関係ありませんが、唯一の基準は最初にの時間を顧客がこのしきい値に達するまで選択することです。このクエリで行だけを取得して、先週のの顧客がしきい値10に達した行をに取得したいとします。
SELECT x.id,
min(x.created_at)
FROM (
SELECT
p.id as id,
p.created_at as created_at,
p.amount as amount
FROM "points" p
WHERE p.amount >= 10 ) x
WHERE x.created_at >= (now()::date - 7)
AND x.created_at < now()::date
GROUP BY x.id
私はわからないよ:
これらの規則に続いて、上記の例では、私は次のクエリを試してみました3、4と5
行を選択するには、私のクエリをしたいと思います私は結果セットが曖昧なので、結果セットが&であることがわかっている結果セットから正しいものを検索しています。誰かがチェックをすることができますか?
ありがとうございます。