利用窗口函数基于时间通过行找回来

问题描述 投票:-1回答:1

我是新的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小时前面,而不是我。

有谁知道这样做的最好的办法吗?

谢谢

sql postgresql window-functions
1个回答
0
投票

这个答案是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';
© www.soinside.com 2019 - 2024. All rights reserved.