我有下表,我想显示所有名称以及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
此查询仅显示第一行预期输出。
答案 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;