📊 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することで「注文した人の名前」を一緒に取得できる。