web-dev-qa-db-ja.com

重複する値のみを表示

重複する値を持つ行(個別の行)を選択し、重複する値の数を最も頻繁に重複する順序で集計する方法は?

次の表があるとします。

  • person_
    • name_
    • favorite_color_

…このデータを使用:

Bob       Brown
Lucy      Lavender
Orin      Orange
Liam      Lavender
Betty     Brown
Blair     Brown

…公演:

3         Brown
2         Lavender

重複している兄弟がないため、リストから「オレンジ」は区別されているため省略します。

私はPostgresに最も興味がありますが、これは標準SQLで実行できると思います。

2
Basil Bourque

これは、単純な SELECT ステートメントで実行できます。

_SELECT count(*) AS count_ , favorite_color_ 
FROM person_ 
GROUP BY favorite_color_
HAVING count(*) > 1
ORDER BY count_ DESC
;
_

count(*)コマンドは Postgresでサポートされている集計関数 であり、 _GROUP BY_ で指定された列に重複した値を持つ行の数を示します句。

重複せずに値を省略するには、 HAVING 句を追加します。 HAVINGWHEREに似ていますが、グループ化を表すために生成される各行に適用されます。

最も頻繁に重複する値を先頭にして結果を並べ替えるには、 _ORDER BY_ 句を使用します。最初の行でAS句を使用して作成した列エイリアス_count__を参照します。

4
Basil Bourque