...其中count(col)> 1

cim*_*ine 20 sql oracle group-by having

我有这样一张桌子:

+-----+-----+-------+
| id  | fk  | value |
+-----+-----+-------+
| 0   | 1   | peter |
| 1   | 1   | josh  |
| 3   | 2   | marc  |
| ... | ... | ...   |
Run Code Online (Sandbox Code Playgroud)

我现在想要获得具有多个值的所有条目.预期结果将是:

+-----+-------+
| fk  | count |
+-----+-------+
| 1   | 2     |
| ... | ...   |
Run Code Online (Sandbox Code Playgroud)

我试图像这样实现:

select fk, count(value) from table where count(value) > 1;
Run Code Online (Sandbox Code Playgroud)

但甲骨文并不喜欢它.

所以我试过这个......

select * from (
    select fk, count(value) as cnt from table
) where cnt > 1;
Run Code Online (Sandbox Code Playgroud)

......没有成功.

有任何想法吗?

Don*_*nie 46

使用该having子句比较聚合.

此外,您需要按照聚合的内容进行分组,以使查询正常工作.以下是一个开始,但由于你错过了一个group by子句,它仍然不会起作用.你到底在想什么?

select fk, count(value) 
from table 
group by fk
having count(value) > 1;
Run Code Online (Sandbox Code Playgroud)

  • 是不是有一个'group by`失踪?`通过fk计数(*)> 1`从表组中选择fk,count(*) (3认同)