ぽかぽかコード日和

とっても暑い夏の日にプログラミングはじめました☀️

【SQL】集計関数と抽出

集計関数とは、
グループ化された データや複数行(レコード)のデータに対して処理をかけて1つの値にまとめる関数のこと。

  • データの分析に活用できる。

  • NULL値は基本的に含めずに集計される。

  • 集計関数を記述できる箇所は、

    • SELECT文の選択列リスト
    • ORDER BY句
    • HAVING
    • (WHERE句では使えない。)

主な集計関数

SUM関数

指定されたカラムの合計を求める。

AVG関数

指定されたカラムの平均値を求める。

MAX関数

指定されたカラムの最大値を求める。

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句で指定する。

参考にしたサイト