每天的SQL计数,并在接下来的几天内加在一起

时间:2016-11-04 15:40:28

标签: sql sql-server

我尝试编写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具有内置函数。或者我是否需要创建临时表?

假设第1天有2个注册,第2天有1个注册,第3天有4个注册,我希望得到如下结果:

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

我需要一个动态解决方案,因为查询将受到date =>的另一个限制; CreateDate在x和y之间的位置。

由于 吕迪

1 个答案:

答案 0 :(得分:2)

您可以使用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子句以过滤内部查询中的特定日期范围。