如何选择空数据的时间段?

时间:2017-07-07 19:17:16

标签: sql hive hiveql

我想找出所有带有空数据的句点,给出下表my_table

id         day       
29         2017-06-05
26         2017-06-05
30         2017-06-06
30         2017-06-06
21         2017-06-06
21         2017-07-01
29         2017-07-01
30         2017-07-20

答案是:

Empty_start    Empty_end
2017-06-07     2017-06-30
2017-07-02     2017-07-19

考虑月数非常重要。例如,在第一行中,答案2017-06- 31 将是不正确的。

如何在Hive中编写此查询?

1 个答案:

答案 0 :(得分:1)

您可以使用lag()lead()

select date_add(day, 1) as empty_start, date_add(next_day, -1) as empty_end
from (select day,
             lead(day) over (order by day) as next_day
      from t
      group by day
     ) t
where next_day <> date_add(day, 1);