如何选择零值的时间间隔

时间:2018-06-03 15:29:02

标签: sql datetime join group-by intervals

我需要选择没有(0)数据的时间间隔。如何在SQL中使用它?

示例:

Time Data
10:00 0
10:15 0
10:30 1
10:45 0
11:00 12
11:15 0
11:30 0
11:45 0
12:00 7

结果:

10:00 - 10:30
10:45 - 11:00
11:15 - 12:00

2 个答案:

答案 0 :(得分:4)

您需要识别这些组,然后根据该组进行汇总。

一种简单的方法是计算每个值上或之后的非零值的数量。这带来了结束时间:

select min(time), max(time)
from (select t.*,
             sum(case when data > 0 then 1 else 0 end) over (order by time desc) as grp
      from t
     ) t
group by grp
having min(data) = 0
order by min(time);

Here是一个SQL小提琴。

注意:这使用窗口/分析函数,这些函数是大多数数据库支持的标准SQL。

答案 1 :(得分:0)

大多数DBMS支持窗口聚合

ST