Menu
Coddy logo textTech

Subqueries Part 2

CoddyのSQLジャーニー「基礎」セクションの一部 — レッスン 39/72。

サブクエリには主に3つの種類があります:

  1. スカラサブクエリ - 単一の値(1行1列)を返します
  2. 行サブクエリ - 複数の列を持つ単一の行を返します
  3. 表サブクエリ - 複数の行と列を返します

たとえば、各サブクエリタイプのユースケースは以下のとおりです。

スカラサブクエリ - 平均 `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;

ユースケースに注意してください:

  • スカラー - シンプルな比較 (>, <, =)
  • 複数の列を一致させる必要がある場合
  • 結果セットからクエリを実行する必要がある場合
challenge icon

チャレンジ

簡単

利用可能なテーブルと列:

  • shop: price, quantity, category, list_date

合計数量が、ショップ内のすべての数量の平均値よりも大きい category を検索してください。

重要: 平均値を計算するには、HAVING 句内のサブクエリを使用する必要があります。ハードコードされた値や別のクエリを使用しないでください。サブクエリは HAVING の中で直接 shop テーブルから AVG(quantity) を計算する必要があります。

解決手順:

  1. まず、ショップ内のすべての数量の平均値を計算するサブクエリを作成します: SELECT AVG(quantity) FROM shop
  2. 次に、各 category ごとに数量を合計し、HAVING キーワードを使用してこのサブクエリと比較します

自分で試してみよう

quiz icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

基礎のすべてのレッスン