Menu
Coddy logo textTech

サブクエリ 2

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

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

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

たとえば、各サブクエリの種類の使用例を次に示します:

スカラーサブクエリ - 平均給与を超える給与を得ている従業員を検索します:

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'
);

テーブルサブクエリ - department と従業員数を表示

SELECT department, count
FROM (
    SELECT department, COUNT(*) as count
    FROM employees
    GROUP BY department
) as dept_counts;

使用例に注目してください:

  • スカラー - 単純な比較(>, <, =)
  • 複数の列を照合する必要がある場合
  • 結果セットからクエリを実行する必要がある場合
challenge icon

チャレンジ

簡単

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

  • shop: pricequantitycategorylist_date

shop 内のすべての quantity の平均よりも、合計 quantity が大きい category を見つけてください。

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

解決手順:

  1. まず、shop 内のすべての quantity の平均を計算するサブクエリを記述します:SELECT AVG(quantity) FROM shop
  2. 次に、各 category について quantity の合計を求め、HAVING キーワードを使用してこのサブクエリと比較します

自分で試してみよう

quiz icon腕試し

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

基礎のすべてのレッスン

自分で練習してみよう: SQLプレイグラウンド