📊 GROUP BY ― グループ別に集計する
-- 部門ごとの平均給与を求める SELECT department, AVG(salary) AS avg_salary FROM employees GROUP BY department; -- HAVINGで集計後に絞り込む SELECT department, COUNT(*) AS cnt FROM employees GROUP BY department HAVING COUNT(*) >= 5; -- 5人以上の部門のみ
※ WHERE は集計前の絞り込み、HAVING は集計後の絞り込みです。
🔗 JOIN ― テーブルを結合する
-- ordersテーブルとusersテーブルを結合 SELECT u.name, o.product, o.amount FROM orders o INNER JOIN users u ON o.user_id = u.id; -- 結合の種類 -- INNER JOIN: 両方に存在するデータのみ -- LEFT JOIN: 左テーブルのデータをすべて残す -- RIGHT JOIN: 右テーブルのデータをすべて残す
💡 JOINのイメージ
「注文テーブル」には user_id(ユーザーのID番号)しかない。
「ユーザーテーブル」には id と name がある。
→ JOINすることで「注文した人の名前」を一緒に取得できる。