簡體   English   中英

SQL 每天計數並將所有后續天數加在一起

[英]SQL count per day and add together all following days

我正在嘗試編寫一個 SQL 查詢來計算每天的用戶並將結果加在一起。 我被卡住了,因為我不知道如何動態地將結果加在一起。

桌子:

UserId | CreateDate
-------+----------------------------
  1    | 2016-06-23 13:59:24.0000000
  2    | 2016-06-23 15:59:24.0000000
  3    | 2016-06-24 05:59:24.0000000
  ...

我有以下查詢來計算每天的注冊量。

SELECT 
    CONVERT(date, u.CreateDate) as [Date], Count(UserId) as [Count] 
FROM 
    User as u
GROUP BY 
    CONVERT(date, u.CreateDate)
ORDER BY
    [Date]

我不知道如何將結果相加。 我希望 SQL Server 2008 R2 有一個內置的 function 適合我的情況。 還是我需要創建臨時表?

假設第 1 天有 2 個注冊,第 2 天有 1 個注冊,第 3 天有 4 個注冊,我想收到這樣的結果:

2016-06-23 | 2
2016-06-24 | 2 + 1 = 3
2016-06-25 | 3 + 4 = 7

我需要一個動態解決方案,因為查詢將有另一個日期限制 => Where CreateDate bewteen x 和 y。

謝謝魯迪

您可以使用sum窗口函數來獲取運行總計。

select [Date],sum([Count]) over(order by [Date]) 
from (SELECT CONVERT(date, u.CreateDate) as [Date], Count(UserId) as [Count] 
      FROM User as u
      GROUP BY CONVERT(date, u.CreateDate)
      ) x
order by 1

添加一個where子句以過濾內部查詢中的特定日期范圍。

使用紅移數據庫

select [Date],sum([Count]) over(order by [Date] ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) 
from (SELECT CONVERT(date, u.CreateDate) as [Date], Count(UserId) as [Count] 
      FROM User as u
      GROUP BY CONVERT(date, u.CreateDate)
      ) x
order by 1

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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