広告スペース(バナー)
🗄️SQL レッスン
SELECTの基礎6
データ操作とサブクエリ5
構文の基本を深める7
応用的な条件・結合7
検索とテーブル操作の応用6
高度なクエリ技法6
集計とデータ整合性6
仕上げの機能と応用6
レッスン 42 / 50

複数のCTEを組み合わせる

このレッスンでは、複数のCTEを組み合わせて使う方法を学び、多段階の集計処理を読みやすく書けるようになることを目標にします。「SQL 複数CTE 使い方」で調べている方向けの内容です。

WITH 名前1 AS (...), 名前2 AS (...)のように、カンマで区切ると複数のCTE(共通テーブル式)を同時に定義できます。段階を分けて計算したい複雑な集計を、読みやすく分割して書けます。

サンプルコードでは、class_avgでクラスごとの平均点を計算し、その結果を使ってabove_avgで平均を上回る生徒を探しています。1つ目のCTEの結果を、2つ目のCTEの中でそのまま参照できる点がポイントです。

初心者がよくつまずくのが、CTE同士の依存関係を意識せずに書いてしまうことです。後で定義したCTEは、前に定義したCTEを参照できますが、その逆はできません。上から順番に「積み木を積むように」処理を組み立てていく感覚を持つと理解しやすくなります。

「まずクラスの平均点を計算し、次にそれを上回る生徒を探す」といった多段階の処理も、それぞれのステップに名前をつけて順番に書けるため、あとから読んだときの理解しやすさが大きく向上します。

SQL
OUTPUT / 実行結果

💡 初回実行時はSQLエンジンの読み込みに数秒かかります。

🎯
ここまでできればゴール達成!
複数のWITH句を組み合わせた、段階的なデータ加工ができるようになります。
広告スペース(バナー)
広告スペース(記事内)