...其中count(col)> 1

时间:2009-11-26 16:45:32

标签: sql oracle group-by having

我有一张这样的表:

+-----+-----+-------+
| id  | fk  | value |
+-----+-----+-------+
| 0   | 1   | peter |
| 1   | 1   | josh  |
| 3   | 2   | marc  |
| ... | ... | ...   |

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

+-----+-------+
| fk  | count |
+-----+-------+
| 1   | 2     |
| ... | ...   |

我试图像这样实现:

select fk, count(value) from table where count(value) > 1;

但甲骨文并不喜欢它。

所以我试过了......

select * from (
    select fk, count(value) as cnt from table
) where cnt > 1;

......没有成功。

有什么想法吗?

1 个答案:

答案 0 :(得分:43)

使用having子句比较聚合。

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

select fk, count(value) 
from table 
group by fk
having count(value) > 1;