この記事では、SQLのサブクエリを活用して複雑なデータ抽出条件を満たすレポートを作成する手順について解説します。サブクエリとは、SQLクエリ内に組み込むことができる別のSQLクエリのことです。この機能をうまく使うことで、一見複雑なデータ抽出も効率よく行えます。具体的なコード例やテーブルを用いた解説を交えながら、どのようにしてサブクエリを活用するのかを詳しく説明していきます。
目次
サブクエリとは
サブクエリとは、SQLのSELECT文、INSERT文、UPDATE文、DELETE文などのクエリ内に埋め込むことができる小さなクエリです。サブクエリは主クエリと連携して動作し、より高度なデータ操作や抽出を可能にします。
サブクエリの基本構文
SQLのサブクエリの基本構文は以下のようになります。
SELECT column1, column2
FROM table1
WHERE column1 = (SELECT column3 FROM table2 WHERE condition);
サブクエリの種類
サブクエリは大きく分けて以下の3種類に分類されます。
- スカラーサブクエリ
- 行サブクエリ
- テーブルサブクエリ
実用例:複雑なデータ抽出条件を満たすレポート作成
具体的なシナリオとして、商品の売上ランキングとその商品を購入した顧客情報を抽出するレポートを作成する例を考えましょう。
準備:サンプルデータベース
以下の2つのテーブルをサンプルデータとして使用します。
商品ID | 商品名 | 売上 |
---|---|---|
1 | りんご | 200 |
2 | バナナ | 150 |
3 | みかん | 100 |
顧客ID | 顧客名 | 商品ID |
---|---|---|
1 | 山田 | 1 |
2 | 佐藤 | 2 |
3 | 鈴木 | 1 |
実行ステップ1:売上ランキングの抽出
まず、商品テーブルから売上の高い商品を抽出します。
SELECT 商品ID, 商品名, 売上 FROM 商品テーブル
ORDER BY 売上 DESC
LIMIT 5;
実行ステップ2:サブクエリを用いた顧客情報の抽出
次に、売上の高い商品を購入した顧客情報をサブクエリを使って抽出します。
SELECT 顧客ID, 顧客名 FROM 購入テーブル
WHERE 商品ID IN (SELECT 商品ID FROM 商品テーブル ORDER BY 売上 DESC LIMIT 5);
結合クエリでの実行
上記のステップを結合して、一つのSQLクエリとして実行することも可能です。
SELECT b.顧客ID, b.顧客名, a.商品名
FROM 商品テーブル as a
JOIN 購入テーブル as b ON a.商品ID = b.商品ID
WHERE a.商品ID IN (SELECT 商品ID FROM 商品テーブル ORDER BY 売上 DESC LIMIT 5);
まとめ
SQLのサブクエリを活用することで、複雑なデータ抽出条件を簡単かつ効率的に満たすことができます。この記事で紹介した手法を用いることで、より高度なデータ解析やレポート作成が可能になるでしょう。
created by Rinker
¥4,554
(2024/11/21 10:54:58時点 Amazon調べ-詳細)
コメント