01 / 05
集める・数える
INPUT · スライド
絞ってからまとめる
02 / 05
`WHERE` は `GROUP BY` の前
書く順番は FROM → WHERE → GROUP BY → ORDER BY。今まで覚えた場所のまま、うしろに GROUP BY が入るだけだよ。
そして効く順番も同じ。先に行を絞って、残った行だけをグループに分けるんだ。
SELECT stall, SUM(sold) FROM sales WHERE price <= 1000 GROUP BY stall;実行結果
こもれび堂 | 18 つむぎ雑貨 | 20
03 / 05
グループごと消えることがある
上の結果、お店が2つしかないことに気づいた? ゆらり工房の品は1200円と2400円だから、WHERE の段階で全部の行が消えたんだ。
行が1つも残らなかったグループは、結果にも出てこない。「0」ではなく行そのものがないよ。
04 / 05
3段の流れで考える
クエリはこの順に動いていると考えると迷わないよ。
- 絞る …
WHEREが行を残す - 分ける …
GROUP BYがグループを作る - まとめる … 集計関数がグループごとに1つの値にする
だから WHERE の条件に集計関数は書けない。絞る時点では、まだ合計は計算されていないんだ。
SELECT stall, AVG(price) FROM sales WHERE day = '2026-05-03' GROUP BY stall;実行結果
こもれび堂 | 700 つむぎ雑貨 | 750 ゆらり工房 | 1200
05 / 05
並べ替えはいちばんあと
ORDER BY は最後。まとめ終わった表を並べる係だから、集計関数を書いても大丈夫だよ。
WHERE → GROUP BY → ORDER BY の3つがそろうと、だいぶ本格的なクエリに見えてくるね。ここから書いてみよう。
SELECT stall, SUM(sold) FROM sales WHERE price >= 600 GROUP BY stall ORDER BY SUM(sold) DESC;実行結果
つむぎ雑貨 | 24 こもれび堂 | 9 ゆらり工房 | 6