Subqueries Part 2
CoddyのSQLジャーニー「基礎」セクションの一部 — レッスン 39/72。
サブクエリには主に3つの種類があります:
- スカラサブクエリ - 単一の値(1行1列)を返します
- 行サブクエリ - 複数の列を持つ単一の行を返します
- 表サブクエリ - 複数の行と列を返します
たとえば、各サブクエリタイプのユースケースは以下のとおりです。
スカラサブクエリ - 平均 `salary` より多くの給与を得ている `employees` を取得する:
SELECT name, salary
FROM employees
WHERE salary > (
SELECT AVG(salary)
FROM employees
);行サブクエリ - Alice と同じ department および salary を持つ従業員を検索する
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;ユースケースに注意してください:
- スカラー - シンプルな比較 (>, <, =)
- 複数の列を一致させる必要がある場合
- 結果セットからクエリを実行する必要がある場合
チャレンジ
簡単利用可能なテーブルと列:
shop:price,quantity,category,list_date
合計数量が、ショップ内のすべての数量の平均値よりも大きい category を検索してください。
重要: 平均値を計算するには、HAVING 句内のサブクエリを使用する必要があります。ハードコードされた値や別のクエリを使用しないでください。サブクエリは HAVING の中で直接 shop テーブルから AVG(quantity) を計算する必要があります。
解決手順:
- まず、ショップ内のすべての数量の平均値を計算するサブクエリを作成します:
SELECT AVG(quantity) FROM shop - 次に、各
categoryごとに数量を合計し、HAVINGキーワードを使用してこのサブクエリと比較します
自分で試してみよう
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
基礎のすべてのレッスン
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