选择分组数据计数= 2的行

时间:2012-03-02 14:24:09

标签: sql count group-by

我必须得到用户,这些用户在给定日期之前和之后至少出现两周。所以我要说我有数据:

 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周)和之后,然后选择仅出现在至少2周之前的用户之后,所以在我的情况下,我会得到结果

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) 

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

要返回在指定日期之前至少两周和之后两周拥有日期记录的用户,请尝试:

select username
from Table1
group by username
having datediff(wk, min(actiondate), @date) >= 2 and 
       datediff(wk, @date, max(actiondate)) >= 2