サブクエリ 1
CoddyのSQLジャーニー「基礎」セクションの一部。レッスン 38/72。
サブクエリを使うと、複数のクエリを1つにまとめることができます。たとえば、次のemployeesテーブルを考えてみましょう。
| id | 給与 |
|---|---|
| 1 | 48 |
| 2 | 34 |
| 3 | 46 |
| 4 | 13 |
| 5 | 28 |
サブクエリが必要です。WHERE salary > AVG(salary) を直接使用できないからです。AVG() のような集計関数は WHERE 句では使用できず、データをグループ化した後にのみ使用できます。
SELECT id, salary
FROM employees
WHERE salary > (
SELECT AVG(salary)
FROM employees
);サブクエリを使うと、まず平均を計算し(内側のクエリ)、次にその値を使って従業員を絞り込む(外側のクエリ)ことで、会社の平均給与より多く稼ぐ従業員を見つけられます。
平均値は (48 + 34 + 46 + 13 + 28) / 5 = 33.8 なので、クエリの結果は次のとおりです。
| id | salary |
|---|---|
| 1 | 48 |
| 2 | 34 |
| 3 | 46 |
チャレンジ
簡単利用可能なテーブルと列:
shop:price,quantity,category,list_date
すべての商品のうち、価格が商品の平均価格より高いものをすべて見つけるクエリを書いてください(すべての列を選択します)。
WHERE句でサブクエリを使って平均価格を計算し、各商品の価格をこの平均価格と比較してください。
自分で試してみよう
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
基礎のすべてのレッスン
自分で練習してみよう: SQLプレイグラウンド