SQL 中級まとめ — JOIN・サブクエリ・ウィンドウ関数の全体像
この記事は、基礎から複雑なSQL,SQLチューニングまでSQLの実践的なスキルを1からマスターする「SQL入門講座の一部」です。
集計関数とGROUP BY、INNER/OUTER JOIN、サブクエリとEXISTS、UNION系の集合演算、CTE、ウィンドウ関数、トランザクションの中級14記事を、図と一覧表で横断整理します。
SQL 中級で学んだ文法の全体像
SQL 中級シリーズで扱った文法を、複数行をまとめる集計・複数表をつなぐ結合とサブクエリ・行を横断して計算するウィンドウ関数・変更をまとめて確定するトランザクションの観点で 1 ページに整理します。
各記事へのリンクから、いつでも復習に戻れます。
集計でまとめ、複数表を結合する
集計関数とGROUP BYは複数行を 1 つの値にまとめる、JOINは複数の表を共通の列でつなぐ役割です。
下の図で、集計 2 記事と結合 3 記事の関係を整理します。
| 分類 | 記事 | 学べること |
|---|---|---|
| 集計 | 集計関数 | COUNT / SUM / AVG / MIN / MAX の全体集計 |
| 集計 | GROUP BY と HAVING | グループ集計・HAVING・集計と WHERE の違い |
| 結合 | INNER JOIN と別名 | 別名・INNER JOIN・ON / USING |
| 結合 | OUTER / CROSS / 自己結合 | LEFT / RIGHT / FULL・CROSS・自己結合 |
| 結合 | JOIN 応用 | JOIN と WHERE / ORDER BY / CASE の組み合わせ |
サブクエリ・集合演算・ウィンドウ関数で組み立てる
サブクエリとEXISTSはクエリの中に別のクエリを差し込む、集合演算とCTEは結果同士を組み合わせて整理する、ウィンドウ関数は行を横断して順位や累積を計算する役割です。
下の図で、サブクエリ・EXISTS・集合演算・CTE と、ウィンドウ関数 3 記事の関係をそれぞれ整理します。
| 分類 | 記事 | 学べること |
|---|---|---|
| サブクエリ | サブクエリ ① IN・WHERE 系 | スカラ・IN・WHERE 内集計・相関の導入 |
| サブクエリ | サブクエリ ② FROM・SELECT | 派生表・SELECT 列サブクエリ・CREATE / INSERT SELECT |
| EXISTS | EXISTS と相関サブクエリ | EXISTS / NOT EXISTS・NULL と EXISTS |
| 集合演算 | UNION / INTERSECT / EXCEPT | 和・積・差の集合演算と UNION ALL |
| CTE | WITH(CTE)と再帰 CTE | 可読性向上・再帰 CTE での階層展開 |
| ウィンドウ ① | OVER / PARTITION BY | 集計ウィンドウ・PARTITION BY |
| ウィンドウ ② | ORDER BY とフレーム | 累積・フレーム指定(ROWS / RANGE) |
| ウィンドウ ③ | 順位・分析関数と実行順序 | ROW_NUMBER / RANK / LAG / LEAD / NTILE・実行順序 |
| トランザクション | トランザクションとロック | BEGIN / COMMIT / ROLLBACK・SAVEPOINT・AUTOCOMMIT |
お疲れ様でした!
ここまでで、集計とGROUP BY、JOINによる複数表の結合、サブクエリとEXISTS、集合演算とCTE、ウィンドウ関数、そしてトランザクションまでを横断的に整理しました。
これらを組み合わせれば、実務でよく書く分析・集計・レポート用クエリの大半が書けます。
気になる記事に戻って、手元のデータで実際に試してみてください。