我们有一个像这样的日期列:
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中编写查询,尝试使用超前/滞后窗口功能能够找到日期之间的差异,但是遇到识别事件的麻烦。
逻辑:事件显然会在开始日期发生,并且如果在开始日期和开始日期+ 5之间存在任何日期,则不会将其视为事件。日期也可能重复,试图提供一些具有预期输出的示例数据。无论我们在期望列中有1个位置,都是一个事件。我的逻辑似乎不起作用,尝试使用case语句和超前/滞后窗口函数。
答案 0 :(得分:1)
您想要的结果似乎来自:
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;