Subqueries Part 2
CoddyのSQLジャーニー「基礎」セクションの一部 — レッスン 39/72。
サブクエリには主に3つのタイプがあります:
- スカラーサブクエリ - 単一の値(1行、1列)を返します
- 行サブクエリ - 複数の列を持つ単一の行を返します
- テーブルサブクエリ - 複数の行と列を返します
たとえば、各サブクエリタイプの使用例をいくつか挙げます:
Scalar Subquery - 平均給与よりも高い給与を得ている従業員を見つける:
SELECT name, salary
FROM employees
WHERE salary > (
SELECT AVG(salary)
FROM employees
);行サブクエリ - Alice と同じ部署と給与を持つ従業員を見つける
SELECT name
FROM employees
WHERE (department, salary) = (
SELECT department, salary
FROM employees
WHERE name = 'Alice'
);テーブルサブクエリ - 部署とその従業員数を表示
SELECT department, count
FROM (
SELECT department, COUNT(*) as count
FROM employees
GROUP BY department
) as dept_counts;使用例に注目してください:
- Scalar - 単純な比較 (>, <, =)
- 複数の列を照合する必要がある場合
- 結果セットからクエリする必要があるとき
チャレンジ
簡単利用可能なテーブルと列:
shop:price,quantity,category,list_date
その総数量がショップ内のすべての数量の平均よりも大きいカテゴリを見つけなさい。
重要: 平均を計算するためにHAVING 句内のサブクエリを使用する必要があります。ハードコードされた値や別々のクエリを使用しないでください — サブクエリは HAVING 内で直接 shop テーブルから AVG(quantity) を計算する必要があります。
解決手順:
- まず、ショップ内のすべての数量の平均を計算するサブクエリを書きます:
SELECT AVG(quantity) FROM shop - 次に、各カテゴリの数量を合計し、
HAVINGキーワードを使用してこのサブクエリと比較します
チートシート
サブクエリには3つの主な種類があります:
- スカラーサブクエリ - 単一の値(1行、1列)を返します
- 行サブクエリ - 複数の列を持つ単一の行を返します
- テーブルサブクエリ - 複数の行と列を返します
スカラーサブクエリ - 単純な比較(>, <, =):
SELECT name, salary
FROM employees
WHERE salary > (
SELECT AVG(salary)
FROM employees
);行サブクエリ - 複数の列を照合:
SELECT name
FROM employees
WHERE (department, salary) = (
SELECT department, salary
FROM employees
WHERE name = 'Alice'
);テーブルサブクエリ - 結果セットに対するクエリ:
SELECT department, count
FROM (
SELECT department, COUNT(*) as count
FROM employees
GROUP BY department
) as dept_counts;自分で試してみよう
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
基礎のすべてのレッスン
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