前回
4. テーブルの集約と検索
- テーブルの列の合計値や平均値などの集計を行うには集約関数を用いる。
- 集約関数は基本的にを除外して集計する。ただし関数はとすればを除外した全行数を数える。
- 重複値を除外して集計するにはキーワードを用いる。
4.1 集約関数
でデータに対して何らかの操作や計算を行うには関数を用いる。差し当たり5つを紹介する:
テーブルのレコード数(行数)を数える。 | ||
テーブルの数値列のデータを合計する。 | ||
テーブルの数値列のデータの平均を取る。 | ||
テーブルの任意の列のデータの最大値を取る。 | ||
テーブルの任意の列のデータの最小値を取る。 |
このような集計用の関数を集約関数または集合関数と呼ぶ。
-- COUNT関数の使い方1:全行を数える SELECT COUNT(*) FROM <テーブル名> -- COUNT関数の使い方2:特定列についてNULLを除外して行数を数える SELECT COUNT(列名) FROM <テーブル名> -- COUNT関数の使い方3:重複値を除外して行数を数える SELECT COUNT(DISTINCT 列名) FROM <テーブル名> -- SUM関数:NULLは自動的に除外 SELECT SUM(列名) FROM <テーブル名> -- AVG関数:NULLは自動的に除外 SELECT AVG(列名) FROM <テーブル名> -- MAX関数:NULLは自動的に除外 SELECT MAX(列名) FROM <テーブル名> -- MIN関数:NULLは自動的に除外 SELECT MIN(列名) FROM <テーブル名>
4.2 テーブルの切り分け
- 集約関数と句を併用することでテーブルを指定して列ごとに切り分けて集約できる。
- 集約キーにが含まれる場合、集約結果にも「不明」行として現れる。
- 集約関数と句を併用する場合、4点の注意事項がある: ①句に書けるものは限定されている ②句には句で付けた列の別名は使えない。 ③句は集約結果をソートしない ④句に集約関数を書くことはできない
4.2.1 GROUP BY
句でグループごとに操作を行うことができる。句は必ず句(句があればそれ)よりも後ろに置くというルールになっている。
集計に当たってはも1つの値と見なされる。
-- GROUP BY句による集計 SELECT <列名1>,<列名2>,… FROM <テーブル名> GROUP BY <列名1>,<列名2>,… -- GROUP BY句による集計例:ある列の値について個数を数える SELECT A1,COUNT(*) FROM <テーブル名> GROUP BY A1
4.2.2 WHERE句を使った場合のGROUP BYの動作
句に句を併用した場合、まずは句で指定した条件でレコードが絞り込まれた後に句により集約が行われる。
4.2.3 GROUP BY句を用いるときの注意
- 集約関数を用いるときは①定数、②集約関数、③句で指定した列名*1しか句に書けない
- 句では句でを用いて指定した名称は利用できない
- 句は結果の順序をソートしない
- 集約関数は句または句以外ではエラーになる
*1:集約キーという。