web-dev-qa-db-ja.com

... where count(col)> 1

私はこのようなテーブルを持っています:

+-----+-----+-------+
| 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;

しかし、Oracleはそれを好みませんでした。

だから私はこれを試しました...

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

...成功しませんでした。

何か案は?

20
cimnine

集計を比較するには、having句を使用します。

また、クエリを正しく機能させるには、集計対象ごとにグループ化する必要があります。以下は開始ですが、group by句がないため、まだ機能しません。正確に何をカウントしようとしていますか?

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