SQLにおけるグループ化と集約関数

目次

グループ化と集約関数

group by 句

group by 句を使うと、テーブルの内容をグループに分けて集約できる。

代表的な集約関数は以下。
集約関数は複数の値を受け取り、1つの値を返すような関数のこと。

・合計する(sum( ))
・平均する(avg( ))
・最大値(max( ))
・最小値(min( ))
・行数を数える(count( ))

桁数を指定する(to_char(x, y))

avg(height)の結果が165.0000000000の時
to_char(avg(height), '999.99')で165.00にすることができる。

nullを強制的に0に変換する(coalesce(x, y))

min(height)の結果がnullのとき、
coalesce(min(height), 0)で、nullを強制的に0に変換できる。

having句

group by 句によって行をグループ化できる。
having句を使うと、それらのグループに対して選択条件を指定できる。

性別でグループ化してから、平均身長が170cm以上のグループだけを表示

where句とhaving句の違い

・where句はテーブルの行を対象とする。group by句の前に実行される。
・having句はグループを対象とする。group by句の後に実行される。

よくある間違い

group by 句を使うと、select句に指定できるのは
「グループ化のキー」と「集約関数の呼び出し」だけ。
これ以外を指定すると、構文エラーになる。

グループ化のキーに式を使う

名前の長さでグループ化し、それぞれの人数を数える

列名は式の一種なので、当然group by 句にも式を指定できる。

その他の集約関数

・ string_agg( ):文字列を連結する
・ array_agg( ):複数の値を配列にする
・ json_object_agg( ):JSON データを作る
・ json_agg( ):JSON 配列を作る

最後に

group by句を使うと、構文エラーが出ることが多かったのですが、今回その原因を知れてよかったです!またSQLの記事書きます!