GROUP BY を使うとグループごとにデータを集計して比較するといった、 データ分析でよく使うような処理を行うことができます。
目次
集約関数で集計する
まずGROUP BY の前に集約関数を解説します。
集約関数を使うとデータの集計を行うことができます。
よく使われる集計関数は下記になります。
集約関数
COUNT関数:データ数を返す
SUM関数 :合計値を返す
MAX関数 :最大値を返す
MIN関数 :最小値を返す
AVG関数 :平均値を返す
関数は値を返すのですが、カウント関数の場合はデータの数を返す、 SUM関数の場合は合計値を返す、といった働きをします。 今回も前回と同じテーブルを対象にしてSQLを実行します。
- Purchase_log
- product
- user
テーブルの準備方法は前回の記事をご覧ください!
はじめてのSQL_テーブルの作成や削除
テーブルの作成や削除そしてデータの作成や削除も、SQLで実行できます。 1 テーブルを作成する テーブルの作成について学びます。 新しいデータの組み合わせでによるテ…
下記のSQLを実行してみます。
SELECT
COUNT(*),
SUM(age),
MAX(age),
MIN(age),
AVG(age)
FROM
user
- 関数はキーワードの後に()がつきます ()の中には引数を入れます 例えばサム関数の引数にageを渡すと、ageの合計値を返すということになります
- データ数を返すCOUNT 関数のみ引数に*(アスタリスク)を受けることができます
- Ageなど列をしていすると、値が無い場合つまりNULLの場合は数えませんが、 *の場合はデータありなしに関わらず行数を返すことになります
結果は下記になります。
COUNT(*) | SUM(age) | MAX(age) | MIN(age) | AVG(age) |
6 | 196 | 57 | 19 | 32.6666666 |
ポイント
SQLではこのような集約関数で集計をおこなう データ分析の際は集計をよく行いますので、集約関数は必ず使えるようにしましょう。
GROUP BYでグループ化
GROUP BYの使い方を解説します。 GROUP BYを使うことで テーブルのデータを、グループ分けを行うことができます。
書式/コード
GROUP BY の書式は下記になります。
SELECT
列名
FROM
テーブル名
GROUP BY
列名
GROUP BY の後に、グループにしたい列名を指定します。
下記のSQLを実行してみます。
SELECT
sex,
COUNT(*),
SUM(age),
AVG(age)
FROM
user
GROUP BY
sex
- GROUP BY でsex列を指定しています、 つまり性別でグループをわけてデータ数や平均年齢を比較するというSQLになります
- GROUP BY でグループごとにまとめたデータを取得することができます
結果は下記になります。
sex | COUNT(*) | SUM(age) | AVG(age) |
女性 | 3 | 89 | 29.6666666 |
男性 | 3 | 197 | 35.6666666 |
ポイント
GROUP BYを使う際は SELECTに指定できるのはグループに指定した列や集約関数のみ、という点です。 それ以外例えば 、idを指定すると基本的にはエラーになります。 基本的にといいましたが、実はエラーになるかどうかはデータベースによります。 ちなみにSQLiteではエラーになりません。