簡體   English   中英

連續列總和基於 sql 服務器中的另一列

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM