这是我面临的问题:
我有一个包含行的大表,我想按接近的时间对它们进行分组,更具体地说是时间差小于 2 分钟,示例如下
具有以下输入数据:
- 16:01:01
- 乙 16:01:20
- 中 16:14:02
- 日 16:15:01
- 下午 16:20:02
预期结果是
16:01:01 2
16:14:02 2
16:20:02 1
如果您使用的是 SQL Server 2012,那么您很幸运,可以使用lag
函数和滚动总计sum
:
with cte as (
select
case
when datediff(mi, lag(data) over (order by data), data) <= 1 then 0
else 1
end as ch,
data
from test
), cte2 as (
select
data, sum(ch) over (order by data) as grp
from cte
)
select
min(data) as data, count(*) as cn
from cte2
group by grp
sql 小提琴演示 http://sqlfiddle.com/#!6/eb9b6/6
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)