繁体   English   中英

选择行,其中分组数据的计数= 2

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM