我有一个查询,其中我正在计算自某项服务启动以来每天注册到该服务的新用户总数。
到目前为止,我已经:
SELECT DISTINCT CONVERT(DATE, Account_Created) AS Date_Created,
COUNT(ID) OVER (PARTITION BY CONVERT(DATE, Account_Created)) AS New_Users
FROM My_Table.dbo.NewAccts
ORDER BY Date_Created
这将返回:
Date_Created | New_Users
--------------------------
2020-01-01 1
2020-01-03 3
2020-01-04 2
2020-01-06 5
2020-01-07 9
我想返回第三列,从开始到现在的每一天的累计总数。所以第一天只有一个新用户。1月3日,三个新用户从一开始就注册了四个——以此类推。
Date_Created | New_Users | Cumulative_Tot
------------------------------------------
2020-01-01 1 1
2020-01-03 3 4
2020-01-04 2 6
2020-01-06 5 11
2020-01-07 9 20
我的思考过程是 ROW_NUMBER()
函数,以便我可以将每个连续的行分开并添加到一起,尽管我不确定这是否正确。我的感觉是,我可能想得太多了,逻辑只是在逃避我的时刻。谢谢你的帮助。
1条答案
按热度按时间lp0sw83n1#
首先:我推荐聚合而不是
DISTINCT
还有Windows数。这使得意图更加清晰,而且可能更有效率。然后,可以使用窗口和来计算累计计数。