01 / 05
集める・数える
INPUT · スライド
グループごとに集計する
02 / 05
`GROUP BY` の形
GROUP BY 列名 を足すと、その列が同じ値の行どうしがひとまとまりになって、集計はグループごとに行われる。
読み方は「stall でまとめて、それぞれの sold を合計して」。3店ぶんの合計が1回で出たね。
SELECT stall, SUM(sold) FROM sales GROUP BY stall;実行結果
こもれび堂 | 18 つむぎ雑貨 | 24 ゆらり工房 | 6
03 / 05
返る行数はグループの数
集計関数だけのときは1行だったけれど、GROUP BY を付けるとグループの数だけ行が返る。
そして SELECT には、GROUP BY に書いた列と集計関数を並べられる。この2種類なら安心してまぜていいんだ。
SELECT stall, COUNT(*) FROM sales GROUP BY stall;実行結果
こもれび堂 | 3 つむぎ雑貨 | 3 ゆらり工房 | 2
04 / 05
どの集計関数でも使える
SUM だけの話じゃない。AVG COUNT MAX MIN も同じようにグループごとに計算される。
下の例は、お店ごとの平均単価。品ぞろえの高さがひと目で比べられるようになったよ。
SELECT stall, AVG(price) FROM sales GROUP BY stall;実行結果
こもれび堂 | 700 つむぎ雑貨 | 1100 ゆらり工房 | 1800
05 / 05
集計した値で並べ替える
ORDER BY に集計関数を書けば、集計した結果の順に並べられる。売れた数の多い順にすればランキングだよ。
書く順番は FROM → GROUP BY → ORDER BY。ここから書いてみよう。
SELECT stall, SUM(sold) FROM sales GROUP BY stall ORDER BY SUM(sold) DESC;実行結果
つむぎ雑貨 | 24 こもれび堂 | 18 ゆらり工房 | 6