Sql server 找出至少连续发生3天(数值)的周期
我必须找出至少连续3天出现值的时间段 该表如下所示:Sql server 找出至少连续发生3天(数值)的周期,sql-server,Sql Server,我必须找出至少连续3天出现值的时间段 该表如下所示: Dates val -------------------- 2002-10-25 0:00 37.8 2002-11-03 0:00 38.4 2002-11-04 0:00 37.2 2002-11-05 0:00 39.1 2002-11-15 0:00 38.6 2002-11-16 0:00 39 2002-11-18 0:00 38.3 2002-11-19 0:00 38.7 2002-11-20 0:00
Dates val
--------------------
2002-10-25 0:00 37.8
2002-11-03 0:00 38.4
2002-11-04 0:00 37.2
2002-11-05 0:00 39.1
2002-11-15 0:00 38.6
2002-11-16 0:00 39
2002-11-18 0:00 38.3
2002-11-19 0:00 38.7
2002-11-20 0:00 39.7
2002-11-21 0:00 39.2
2002-11-22 0:00 39.6
2002-11-23 0:00 38.5
2002-11-28 0:00 37.5
2003-10-03 0:00 37.1
2003-10-06 0:00 38.1
2003-10-07 0:00 37.6
预期产量为
Daterange NoOfDays
---------------------------------------------
2002-11-03 0:00-2002-11-05 0:00 3
2002-11-18 0:00-2002-11-23 0:00 6
您可以通过为日期分配分组id来进行此计算。一个简单的方法是减去一系列的数字——差在一系列的天中是恒定的。然后按此数字进行聚合:
select min(daterange), max(daterange), count(*) as numdays
from (select t.*,
dateadd(day,
- row_number() over (order by daterange),
daterange) as grp
from t
) t
group by grp
having count(*) >= 3;
谢谢。如果我不得不忽略1天的间隔怎么办?在这种情况下,这个查询仍然适用吗?@bill。这是另一个问题。你应该问另一个问题。