Subqueries Part 1
CoddyのSQLジャーニー「基礎」セクションの一部 — レッスン 38/72。
サブクエリを使うと、複数のクエリを1つに組み合わせることができます。たとえば、以下の<strong>employees</strong>テーブルを考えてみましょう:
| 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 | 給与 |
|---|---|
| 1 | 48 |
| 2 | 34 |
| 3 | 46 |
チャレンジ
簡単利用可能なテーブルと列:
<strong>shop</strong>:<strong>price</strong>,<strong>quantity</strong>,<strong>category</strong>,<strong>list_date</strong>
価格が全アイテムの平均価格よりも高いすべてのアイテム(すべての列を選択)を取得するクエリを書いてください。
WHERE 句でサブクエリを使用して平均価格を計算し、各アイテムの価格をこの平均と比較してください。
チートシート
サブクエリは複数のクエリを1つに結合することを可能にします。WHERE句で直接集計関数(例: AVG())を使用できない場合に便利です。
基本的なサブクエリの構文:
SELECT column1, column2
FROM table_name
WHERE column1 > (
SELECT AVG(column1)
FROM table_name
);サブクエリ(内側クエリ)は最初に実行されて平均を計算し、その後、外側クエリがその結果を使用してデータをフィルタリングします。
自分で試してみよう
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
基礎のすべてのレッスン
4More Keywords
The IN keywordThe BETWEEN keywordThe LIKE keywordThe AS keywordRecap - Cellphone Models2Conditions
Conditions BasicsThe AND keywordThe OR keywordThe NOT keywordMultiple Conditions CombinedParenthesisBooleans5Arithmetic Operations
Mathematical OperatorsMathematical ColumnsThe Modulo OperationThe ROUND() Function3Specific Return Format
Null valuesSort Results Part 1Sort Results Part 2Recap - Cyber Security FirmLimit number of recordsRecap - Vehicle Factory6Intro Challenges
Recap - Parliamentary ElectionRecap - Police Criminal ArrestRecap - Bar Beverage ContainerRecap - Engineer new columns