【SQL】集計関数と抽出
集計関数とは、
グループ化された データや複数行(レコード)のデータに対して処理をかけて1つの値にまとめる関数のこと。
データの分析に活用できる。
NULL値は基本的に含めずに集計される。
集計関数を記述できる箇所は、
- SELECT文の選択列リスト
- ORDER BY句
- HAVING
- (WHERE句では使えない。)
- SELECT文の選択列リスト
主な集計関数
SUM関数
指定されたカラムの合計を求める。
SUM(カラム名)
AVG関数
指定されたカラムの平均値を求める。
MAX関数
指定されたカラムの最大値を求める。
MAX(カラム名)
MIN関数
指定されたカラムの最小値を求める。
MIN(カラム名)
SELECT SUM(price), AVG(price), MAX(price), MIN(price) FROM orders;
COUNT関数
検索結果の指定したカラムの行数を求める。
COUNT(カラム名)
SELECT COUNT(price) FROM orders;
- 指定した行のNULLでない行数を数える。
COUNT(*)アスタリスクを指定したときは、NULLも含めた全ての行数を数える。COUNT(DISTINCT カラム名)DISTINCT句と組み合わせて使うと、重複を除いた数を数えられる。
グループごとの集計
- SELECT文の記述順
SELECT 列名1, 列名2, ・・・
FROM テーブル名
[WHERE 条件式]
[GROUP BY グループ化列名]
[HAVING 集計結果に対する条件式]
[ORDER BY グループ化列名 並び順]
GROUP BY句
指定した列でグループ化して、グループごとに集計処理をする。
SELECT purchase_date, SUM(price) FROM orders GROUP BY purchase_date;
☀︎購入日ごとの合計金額が表示される。
- GROUP BYに複数の列をカンマ区切りで指定すると、
その組み合わせごとにグループ化される。
「購入日ごと」&「名前ごと」の合計金額も表示できる。
HAVING句
グループ化したデータから条件を絞り込む。
SELECT purchase_date, SUM(price) FROM orders GROUP BY purchase_date HAVING SUM(price) > 0;
☀︎購入日ごとの合計金額から、0より大きいグループのみ表示される。
- 集計関数は実行順序からWHERE句では使えないので、HAVING句で指定する。