本文へスキップ
BecomeCoder

SQL データ操作 (DML)コース · 第2章 集計する · レッスン6

集計関数 ― たくさんの行を1つの答えに

ブラウザで完結

導入

SELECT は基本「行の数だけ結果が出る」操作でした。集計関数は逆に、何行あっても答えは1行。列全体をまとめて「合計・平均・最大…」を計算します。

説明

COUNT のように、複数行を1つの値へまとめる関数を 集計関数 と呼びます。代表は5つです。

flowchart LR
    T["products の price 列<br/>3200・1500・24800・128000・5400・800・6800"]
    T -->|"SUM"| S["合計 170500"]
    T -->|"AVG"| A["平均 24357"]
    T -->|"MAX"| MX["最大 128000"]
    T -->|"MIN"| MN["最小 800"]
    T -->|"COUNT"| C["件数 7"]
関数意味
COUNT(*)行数(件数)
SUM(列)合計
AVG(列)平均
MIN(列)最小
MAX(列)最大

AS を使うと結果の列に分かりやすい名前(別名)を付けられます。

SELECT COUNT(*) AS 件数, SUM(price) AS 合計, AVG(price) AS 平均 FROM products;

WHERE と組み合わせれば、「条件に合う行だけ」を集計できます。たとえば「周辺機器(category_id = 1)の商品の平均価格」はこうです。

SELECT AVG(price) AS 平均 FROM products WHERE category_id = 1;

NULL は数えないという点だけ注意してください。COUNT(*) は全行を数えますが、COUNT(列) はその列が NULL の行を除いて数えます。SUMAVG なども NULL を無視して計算します。

やってみよう

初期表示のクエリを実行し、商品の件数・平均価格・最高額が1行にまとまって出ることを確認しましょう。次に SELECT MIN(price), MAX(price) FROM products; で最安値と最高値も出してみてください。

演習

orders テーブルの注文件数を、COUNT(*) を使って 注文数 という別名で取り出してください。

ヒント1を見る

件数は COUNT(*)、別名は AS 注文数 です。

ヒント2を見る

SELECT COUNT(*) AS 注文数 FROM orders;

実際に動かしてみよう

下のエディタにクエリを書いて「実行」を押すと、ブラウザ内のSQLiteで結果が表示されます。本文の例をそのまま試したり、書き換えたりしてみましょう。

SQL — ブラウザ内で実行(SQLite)

ブラウザ内でSQLを動かす環境(SQLite)を読み込みます(初回のみ一瞬)。
スクロールして表示された時点でも自動で読み込まれます。