我是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 小时前的行(滞后(,而不是我必须定义没有时间与之关联的行数。
请问有谁知道最好的方法吗?
谢谢
这个答案是针对甲骨文的,因为这个问题最初被标记为甲骨文。
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';