SQLでは単純にレコードをSELECTするだけでなく、平均値や最大値、最小値といった統計値を取得することもできます。
今回はSQLで統計値を取得する方法を実例交えてい紹介していきます。
使用するテーブル
今回は以下のテーブルを作成し、MathTestから各種統計量を算出します。
CREATE TABLE Table1
(`ID` int, `Name` varchar(9), `Class` varchar(1), `MathTest` int)
;
INSERT INTO Table1
(`ID`, `Name`, `Class`,`MathTest`)
VALUES
(1, 'Aoki', 'A', 66),
(2, 'Yoshida', 'A', 80),
(3, 'Yamashita', 'B', 52),
(4, 'Saionji', 'B', 92),
(5, 'Oka', 'B', 44)
;
統計量の取得
平均値、最小値、最大値
平均値、最小値、最大値は関数が用意されています。平均値、はAVG()、最小値はMIN()、最大値はMAX()で取得します。
下記SQLでは、指定列のすべての値から平均や最大、最小値を算出します。
SELECT AVG(MathTest), MIN(MathTest), MAX(MathTest) FROM Table1;
データ件数
データ件数をカウントする場合はCOUNT()関数を用います。
SELECT COUNT(MathTest) FROM Table1;
総和
列の総和を求める場合はSUM()関数を用います。
SELECT SUM(MathTest) FROM Table1;
グループごとの集計
上記では列のすべてのデータから集計値を算出していましたが、GROUP BY句と併用することでグループごとに集計値を算出することもできます。
Classごとに平均、最大、最小を集計してみます。
SELECT Class, AVG(MathTest), MIN(MathTest), MAX(MathTest) FROM Table1
GROUP BY Class;
まとめ
SQLで平均値や最大、最小値といった統計量を算出する方法を紹介しました。
今回紹介した統計量は、一度データをスキャンすれば集計できる簡単な統計量ばかりです。中央値や最頻値等、集計にやや複雑な処理が必要なものは今回のように関数が用意されていない場合もあるので、その辺りは別記事にて紹介しようと思います。
ではでは👋