Study Log

日々の学習のまとめ・備忘録

View on GitHub
19 March 2026

複数の仮想テーブル

by Natsumi Chiba

仮想テーブルを複数作成する方法

SQLでは、仮想テーブル(Derived Table)を複数作成して組み合わせることで、複雑なデータ処理を分かりやすく整理できます。


1. 方法①:FROM句に複数の仮想テーブルを書く

概要

複数のサブクエリをそれぞれ仮想テーブルとして定義し、JOINで結合する。

SELECT a.user_id, a.total, b.avg_amount
FROM (
  SELECT user_id, SUM(amount) AS total
  FROM orders
  GROUP BY user_id
) a
JOIN (
  SELECT AVG(amount) AS avg_amount
  FROM orders
) b
ON true;

ポイント


2. 方法②:CTE(WITH句)を使う

概要

複数の仮想テーブルを名前付きで定義できる方法
可読性が高く、実務でよく使われる

WITH total_per_user AS (
  SELECT user_id, SUM(amount) AS total
  FROM orders
  GROUP BY user_id
),
avg_amount AS (
  SELECT AVG(amount) AS avg_amount
  FROM orders
)
SELECT t.user_id, t.total, a.avg_amount
FROM total_per_user t
JOIN avg_amount a
ON true;

ポイント


3. どちらを使うべきか

方法 特徴
FROMに直接書く シンプルだが読みにくくなりやすい
WITH(CTE) 可読性が高く、複雑な処理に向いている

4. 使い分けの目安

FROM句の仮想テーブル

CTE(WITH句)


まとめ

tags: