【发布时间】:2016-12-16 01:41:06
【问题描述】:
编辑:开始日期为 XXXX 年 1 月 1 日
我需要根据 7 天分组创建不同用户 ID 的计数。基本上,如果用户在每月的第 1 天和第 2 天致电,他们将被计为 1 次。但是,如果他们在第 1 天和第 10 天打电话,那么他们会被计算 2 次。
表格布局:
userId CallId datetime
0 123 01/01/2016 xx:xx:xx
0 124 01/10/2016 xx:xx:xx
1 125 01/10/2016 xx:xx:xx
1 126 01/10/2016 xx:xx:xx
2 127 01/10/2016 xx:xx:xx
1 128 01/30/2016 xx:xx:xx
2 129 01/31/2016 xx:xx:xx
我需要返回的样子:
Count(UserID) Week#
1 1
3 2
2 4
感谢您的宝贵时间。
【问题讨论】:
-
对于给定年份的计算,您的一周应该从哪里开始?
-
这取决于您何时“开始”这 7 天的区块。即,对于像 {
--111---1-------1----------1--------} 这样的数据,如果您从一开始 {--111- --1---- ---1--- ------- 1------ --} = 4 的计数将不同于您在 3 天开始时的计数:{-- 111---1 ------- 1------ ----1-- ------} = 3。 -
为了简单起见,我会在 XXXX 年 1 月 1 日开始它
-
我可能会做一个循环.....仍然在这里集思广益。
-
我不认为查询应该与 UserId 相关,但 week# 仅基于给定的结果。请参阅下面的查询
标签: sql sql-server sql-server-2012