连续列基于sql server中的另一列求和
我有如下数据 AppName 开始 完成 总时间 微软Word 2021-02-28 7:30:25 2021-02-28 7:31:25 1. 微软Word 2021-02-28 7:31:26 2021-02-28 7:33:25 2. 微软Word 2021-02-28 7:33:27 2021-02-28 7:35:25 2. 微软Word 2021-02-28 7:35:28 2021-02-28 7:37:25 2. 谷歌浏览器 2021-02-28 7:37:29 2021-02-28 7:39:25 2. 资源管理器 2021-02-28 7:39:30 2021-02-28 7:41:25 2. 资源管理器 2021-02-28 7:41:31 2021-02-28 7:43:25 2. 微软Word 2021-02-28 7:43:32 2021-02-28 7:45:25 2. 微软Word 2021-02-28 7:45:33 2021-02-28 7:47:25 2. 谷歌浏览器 2021-02-28 7:47:34 2021-02-28 7:49:25 2. 谷歌浏览器 2021-02-28 7:49:35 2021-02-28 7:51:25 2. 谷歌浏览器 2021-02-28 7:51:36 2021-02-28 7:53:25 2. 微软Excel 2021-02-28 7:53:37 2021-02-28 7:55:25 2.连续列基于sql server中的另一列求和,sql,sql-server,Sql,Sql Server,我有如下数据 AppName 开始 完成 总时间 微软Word 2021-02-28 7:30:25 2021-02-28 7:31:25 1. 微软Word 2021-02-28 7:31:26 2021-02-28 7:33:25 2. 微软Word 2021-02-28 7:33:27 2021-02-28 7:35:25 2. 微软Word 2021-02-28 7:35:28 2021-02-28 7:37:25 2. 谷歌浏览器 2021-02-28 7:37:29 2021-02-
这是一种缺口和孤岛问题。您不关心表中的时间间隔,因此可以使用行号的差异:
select appname, min(start), max(finish), sum(time)
from (select t.*,
row_number() over (order by start) as seqnum,
row_number() over (partition by appname order by start) as seqnum_a
from t
) t
group by appname, (seqnum - seqnum_a)