许多日期间隔中的平均日期



我在一个表中有许多日期间隔:

结束
开始
2019-03-01 2019-03-10
2019-01-11 2019-04-20
2020-11-11 2020-12-12

一种强力方法是将时间段划分为单独的几天。然后聚合并提取具有最大计数的天数。

您可以使用递归CTE:来完成此操作

with d as (
select s, e
from t
union all
select dateadd(day, 1, s), e
from d
where s < e
)
select top (1) with ties s, count(*) as overlaps
from d
group by s
order by dense_rank() over (order by count(*) desc);

如果您的间隔可能有100天或更多,那么您需要将option (maxrecursion 0)添加到查询中。

这里有一个db<gt;不停摆弄

最新更新