我是SQL的新手,已经奋斗了几天,以了解如何根据时间向后搜索前几行。
我发现Windows延迟功能可能会在这里帮助我,但我还没有找到一种方法来定义它可以回溯的时间段。
如果我输入:-
SELECT food_word_1,
date,
lead(food_word_1,2) OVER (ORDER BY date DESC) as prev_food_word_1
FROM bookmark
WHERE mood = 'allergies'"
结果如下:-
food_word_1 | date | prev_food_word_1
-------------+----------------------------+------------------
burritos | 2019-02-01 09:56:40.943341 |
burritos | 2019-02-01 09:56:31.56869 |
burritos | 2019-02-01 09:56:31.34883 | burritos
cereal bar | 2019-01-10 07:24:29.602226 | burritos
almonds | 2019-01-09 08:37:34.223448 | burritos
fennel | 2019-01-09 08:35:44.186134 | cereal bar
我得到一个向后搜索2行的结果,但我想做的是在36小时之前向后(滞后)搜索行,而不必定义没有时间的行数。
请问有人知道最好的方法吗?
谢谢
答案 0 :(得分:0)
此答案适用于Oracle,因为该问题最初被标记为Oracle。
Oracle支持带有数字范围的range between
,但是它们也可以用于日期。试试这个:
SELECT food_word_1,
date,
lead(food_word_1) OVER (ORDER BY date DESC RANGE BETWEEN 1.5 PRECEDING AND CURRENT ROW) as prev_food_word_1
FROM bookmark
WHERE mood = 'allergies';