sql查询使用分组按怎么办
我有一个带有以下值的表详细信息sql查询使用分组按怎么办,sql,Sql,我有一个带有以下值的表详细信息 **id name locale code** 1 Zen GR 101 2 Ryan IN 105 3 Rico GR 101 4 Susan GR 101 5 Tom AU 106 6 John AU 107 7 Lis AU
**id name locale code**
1 Zen GR 101
2 Ryan IN 105
3 Rico GR 101
4 Susan GR 101
5 Tom AU 106
6 John AU 107
7 Lis AU 107
我需要选择所有代码计数大于2的行。并尝试使用此查询
select *
from Details
group by code
having count(code)>2
返回结果:
1 Zen GR 101
6 John AU 107
但我想要这个:
1 Zen GR 101
3 Rico GR 101
4 Susan GR 101
6 John AU 107
7 Lis AU 107
请帮我做这个
谢谢一种通用的SQL方法是在操作符中使用
:
select *
from Details d
where d.code in (select code
from Details
group by code
having count(code) > 2
) ;
根据数据库的不同,还有其他的编写方法(在特定的数据库中,有些方法的执行速度可能比这快)
编辑:
在许多数据库中执行此操作的一个好方法是使用窗口/分析函数:
select id, name, locale, code
from (select d.*, count(*) over (partition by code) as codecnt
from details d
) d
where codecnt > 1;
您使用的是什么数据库?谢谢您的快速回复。。我会选择选项1。