日記表があるとします。日記の各エントリはuser_id
とentry_date
です。 user_id
の範囲については、指定した日付より後の最初のエントリを選択したいと考えています。すべての行について、基準を満たす最初のエントリを選択します。
ので
user_id | entry_date
--------------------
1 | 2016-11-09 20:00:00
2 | 2016-11-09 20:00:00
1 | 2016-11-09 21:00:00
1 | 2016-11-09 22:00:00
5 | 2016-11-10 20:00:00
と私は
SELECT user_id,entry_date FROM entries
WHERE entries.user_id BETWEEN 10 AND 20
AND TAKE_FIRST(entries.entry_date >= to_timestamp('2016-11-09 20:30:00', 'yyyy-mm-dd hh24:mi:ss'))
ような何か書くことができます想像(TAKE_FIRST()
は、私にはわからない何のためのプレースホルダです。)
となり、結果はとなる
user_id | entry_date
--------------------
1 | 2016-11-09 21:00:00
5 | 2016-11-10 20:00:00
どのようにすればいいですか? ROW_NUMBER()
で
パフォーマンスに問題があり、指定された日付よりも大きいすべてのタイムスタンプが選択され、そのうちの1つだけが選択されていると思います。パフォーマンスを改善できますか? – kasperhj