今回の課題・得点と最高完了得点をこのブラウザに保存します。SQL入力・実行結果・教材DBへの変更は再読み込みで戻ります。誤答やヒントによる減点はありません。
最高完了得点: 0 / 50pt
GROUP BY でグループ別に集計する方法と、HAVING でグループに条件を付ける方法を練習します。
GROUP BY は、同じ値を持つ行をグループにまとめて集計するときに使います。
SELECT category, COUNT(*) FROM products GROUP BY category;
これで「カテゴリごとの商品数」が取得できます。
-- カテゴリごとの平均価格
SELECT category, AVG(price) AS avg_price
FROM products
GROUP BY category;
-- カテゴリごとの合計在庫
SELECT category, SUM(stock) AS total_stock
FROM products
GROUP BY category;
WHERE が行への条件なのに対し、HAVING はグループへの条件です。
-- 商品数が2件以上のカテゴリだけ表示
SELECT category, COUNT(*) AS cnt
FROM products
GROUP BY category
HAVING cnt >= 2;
| WHERE | HAVING | |
|---|---|---|
| 対象 | 個々の行 | グループ |
| 実行タイミング | GROUP BY の前 | GROUP BY の後 |
| 集計関数 | 使えない | 使える |
結果は1000行まで・実行は30秒まで。中止・リセットは教材への変更だけを破棄し、入力SQLと進捗は残します。
教材DBを初期化しています。