SQL查询以查找相同user_id计数的所有名称> 3

时间:2014-11-24 11:28:49

标签: sql

我有下表,我想显示所有名称以及user_id,其中唯一的user_id计数> 3。

user_id  names
--------------
701      Name1
701      Name2
701      Name3
701      Name4     
702      Name5
702      Name6
703      Name7
703      Name8

例如:

在上表中,只有user_id 701 的名称超过 3 。所以我的输出应该是这样的

    user_id    names
    ---------------
    701        Name1
    701        Name2
    701        Name3
    701        Name4

我尝试过以下查询,但未获得预期结果:

SELECT user_id,names FROM table GROUP BY user_id HAVING count(user_id) > 3

此查询仅显示第一行预期输出。

2 个答案:

答案 0 :(得分:5)

试试这个

select user_id, names
  from table 
 where user_id in (select user_id
                     from table
                    group by user_id
                   having count(*) > 3)

答案 1 :(得分:1)

大多数数据库都支持ANSI标准窗口函数。你可以这样做:

select user_id, names
from (select t.*, count(*) over (partition by name) as cnt
      from table t
     ) t
where cnt > 3;