重複する値を持つ行(個別の行)を選択し、重複する値の数を最も頻繁に重複する順序で集計する方法は?
次の表があるとします。
person_
name_
favorite_color_
…このデータを使用:
Bob Brown
Lucy Lavender
Orin Orange
Liam Lavender
Betty Brown
Blair Brown
…公演:
3 Brown
2 Lavender
重複している兄弟がないため、リストから「オレンジ」は区別されているため省略します。
私はPostgresに最も興味がありますが、これは標準SQLで実行できると思います。
これは、単純な 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
句を追加します。 HAVING
はWHERE
に似ていますが、グループ化を表すために生成される各行に適用されます。
最も頻繁に重複する値を先頭にして結果を並べ替えるには、 _ORDER BY
_ 句を使用します。最初の行でAS
句を使用して作成した列エイリアス_count_
_を参照します。