sql:确定是否发生了事件?

vof42yt1  于 2021-06-27  发布在  Hive
关注(0)|答案(1)|浏览(402)

我们有这样一个日期栏:

Date            Expected Output
1-Jan-18           1
2-Jan-18           0
3-Jan-18           0
4-Jan-18           0
5-Jan-18           0
19-Jan-18          1
20-Jan-18          0
21-Jan-18          0
25-Jan-18          1
29-Jan-18          0
1-Feb-18           0
4-Feb-18           1
13-Feb-18          1
18-Feb-18          1
21-Feb-18          0
3-Mar-18           1
12-Mar-18          1

我试着在impala/hive中写一个查询,试着用lead/lag窗口函数能够找到日期之间的差异,但是在识别事件时遇到了麻烦。
逻辑:事件将在开始日期发生,如果有任何日期介于开始日期和开始日期+5之间,则不被视为事件。日期也可以重复,试图提供一些样本数据与预期的产出。在预期列中,只要有1,就是一个事件。我的逻辑似乎不起作用,尝试了case语句和lead/lag窗口函数。

k7fdbhmy

k7fdbhmy1#

你想要的结果似乎来自:

select t.*,
       (case when date >= lag(date) over (order by date) and
             date < date_add(lag(date) over (order by date), 5)
             then 0 else 1
        end) as flag
from t;

相关问题