SQLでサブクエリを効率的に使う方法

この記事では、SQLのサブクエリについて深く掘り下げます。サブクエリはSQLの中でも特に強力な機能の一つであり、高度なデータ操作や集計に非常に便利です。具体的なコード例とその解説、データテーブルを用いた演習問題とその回答も含めて、幅広く解説していきます。

目次

サブクエリとは

サブクエリとは、SQL文の中で別のSQL文を実行することです。主にSELECT文の中で使用されますが、INSERT、UPDATE、DELETE文でも使用されることがあります。

サブクエリの基本形

サブクエリの基本的な形は以下のようになります。

SELECT column1, column2
FROM table1
WHERE column3 = (SELECT column4 FROM table2 WHERE condition);

サブクエリの種類

サブクエリは主に以下の3つの種類に分類されます。

  • スカラーサブクエリ:1つの列と1つの行だけを返すサブクエリ
  • 行サブクエリ:1つの列と複数の行を返すサブクエリ
  • 表サブクエリ:複数の列と複数の行を返すサブクエリ

サブクエリの応用例

ここでいくつかの具体的なサブクエリの応用例について解説します。

価格が平均以上の商品を検索する

次のSQL文では、商品テーブルから価格が平均価格以上の商品を検索します。

SELECT product_name, price
FROM products
WHERE price >= (SELECT AVG(price) FROM products);

特定の条件に一致するレコードを更新する

次のSQL文では、従業員テーブルから最も収入が高い部署を特定し、その部署の従業員全員の給与を10%アップします。

UPDATE employees
SET salary = salary * 1.1
WHERE department_id = (SELECT department_id FROM employees GROUP BY department_id ORDER BY SUM(salary) DESC LIMIT 1);

演習問題とその回答

以下はサブクエリを用いた演習問題とその回答です。

演習問題1:特定のカテゴリーの最安値商品を探す

以下の商品テーブル(products)を使って、各カテゴリーで最も安い商品を探してください。

product_idproduct_namecategoryprice
1AppleFruit100
2BananaFruit80
3CarrotVegetable50
商品テーブル(products)

回答

以下のSQL文で各カテゴリーで最も安い商品を探せます。

SELECT category, MIN(price)
FROM products
GROUP BY category;

解説

このSQL文では、商品テーブルからカテゴリーごとに最小の価格(MIN(price))を選択しています。GROUP BYを使ってカテゴリーでグループ化しています。

まとめ

サブクエリはSQLの中でも非常に強力な機能であり、多くの場面で役立ちます。基本から応用まで、しっかりと理解しておくことで、より高度なデータ操作が可能になります。演習問題を通じて理解を深め、日々の業務や研究に活かしてください。

コメント

コメントする

目次