[英]Continuous columns sum based on another column in sql server
我有如下數據
應用名稱 | 開始 | 結束 | 總時間 |
---|---|---|---|
微軟字 | 2021-02-28 7:30:25 | 2021-02-28 7:31:25 | 1 |
微軟字 | 2021-02-28 7:31:26 | 2021-02-28 7:33:25 | 2 |
微軟字 | 2021-02-28 7:33:27 | 2021-02-28 7:35:25 | 2 |
微軟字 | 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 |
Windows 資源管理器 | 2021-02-28 7:39:30 | 2021-02-28 7:41:25 | 2 |
Windows 資源管理器 | 2021-02-28 7:41:31 | 2021-02-28 7:43:25 | 2 |
微軟字 | 2021-02-28 7:43:32 | 2021-02-28 7:45:25 | 2 |
微軟字 | 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 |
並且需要基於 App 名稱的 coninuoues 列 Totaltime sum
output 像這樣
應用名稱 | 開始 | 結束 | 總時間 |
---|---|---|---|
微軟字 | 2021-02-28 7:30:25 | 2021-02-28 7:37:25 | 7 |
谷歌瀏覽器 | 2021-02-28 7:37:29 | 2021-02-28 7:39:25 | 2 |
Windows 資源管理器 | 2021-02-28 7:39:30 | 2021-02-28 7:43:25 | 4 |
微軟字 | 2021-02-28 7:43:32 | 2021-02-28 7:47:25 | 4 |
谷歌瀏覽器 | 2021-02-28 7:47:34 | 2021-02-28 7:53:25 | 6 |
微軟 Excel | 2021-02-28 7:53:37 | 2021-02-28 7:55:25 | 2 |
這是一種差距和孤島問題。 您不關心表中的時間間隔,因此您可以使用行號的差異:
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)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.