[英]SELECT COUNT(*) - return 0 along with grouped fields if there are no matching rows
[英]Select rows where count of grouped data =2
我必须得到用户,它们在给定日期前后至少两个星期出现。 所以可以说我有数据:
userName date week
user1 27 10 2011 44
user1 27 10 2011 44
user1 27 10 2011 44
user2 21 04 2011 17
user2 29 04 2011 17
user2 02 05 2011 19
user2 03 05 2011 19
user2 16 05 2011 21
user2 23 05 2011 22
user3 06 01 2011 24
user3 14 05 2011 25
user3 20 05 2011 26
user3 27 05 2011 27
并且我需要先按用户和星期将结果分组,然后我需要计算用户之前(假设第20周)和之后出现了几周,然后仅选择在前后至少两周出现的用户,所以就我而言,我会得到结果
user2
不幸的是,由于数据库限制,我无法创建viewTable。 这个查询只给我结果的第一部分,按用户和星期分组的数据,但是我不知道如何计算分组数据:
SELECT username,
min(a.actionDate) as date,
datepart(wk,a.actionDate) as week
FROM Table1 a
GROUP BY username ,
datepart(wk,amd.actionDate)
谢谢你的帮助。
要返回具有日期记录至少在指定日期之前两周和之后两周的用户,请尝试:
select username
from Table1
group by username
having datediff(wk, min(actiondate), @date) >= 2 and
datediff(wk, @date, max(actiondate)) >= 2
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.