("dateId", "userId")
それが一意であり、新しい行には常により大きな (後で) があると仮定しdateId
ます。
いくつかのコメントの後:
あなたが必要だと思うもの:
SELECT "dateId", "userId", "Salary"
FROM (
SELECT "dateId", "userId", "Salary"
,(row_number() OVER (PARTITION BY "userId" -- either this
ORDER BY "dateId")) % 2 AS rn
FROM user_table
WHERE "userId" = 789 -- ... or that
) sub
WHERE sub.rn = 1
AND "Salary" > 0;
に注意してPARTITION BY
ください。このようにして、各秒dateId
ごとuserId
にスキップし、追加の (後の) 行はこれまでのところ選択を変更しません。
また、単一 userId
( )の行を選択している限りWHERE "userId" = 789
、述語をサブクエリに取り込み、同じ効果 (単一ユーザーの安定した選択) を実現します。両方は必要ありません。
WHERE
サブクエリの句は、単一のユーザーに対してのみ機能し、 PARTITION BY
1 つのクエリ内の任意の数のユーザーに対して機能します。
あれですか?それは...ですか?
彼らは私に「探偵」バッジを与えるべきです。
真剣に。