嘿我试图做一个子查询,允许我通过分组得到一些东西,然后基本上取消分组,并根据我刚刚得到的数量选择一定数量的行。如果SQL允许类似contains()方法或类似的东西,那么这个查询基本上就是我想要的。
select cat, mouse
from pets
where cat = (select cat
from pets
group by cat
having count(mouse) > 3);
有什么想法?使用oracle10g。
答案 0 :(得分:5)
select cat, mouse
from pets
where cat in (select cat
from pet
group by cat
having count(mouse) > 3);
将'='更改为'in' in关键字就是这样做的。
答案 1 :(得分:1)
使用子查询并不是非常错误,但使用分析函数的方法通常对这种自连接查询执行得更好。
select cat, mouse from
(
select cat, mouse, count(mouse) over(partition by cat) as ct
)
where ct = 3