Menu
Coddy logo textTech

Подзапросы. Часть 2

Часть раздела Основы путешествия по SQL на Coddy. Урок 39 из 72.

Существует три основных типа подзапросов:

  1. Скалярные подзапросы — возвращают одно значение (одна строка, один столбец)
  2. Строковые подзапросы — возвращают одну строку с несколькими столбцами
  3. Табличные подзапросы — возвращают несколько строк и столбцов

Например, вот несколько вариантов использования для каждого типа подзапроса:

Скалярный подзапрос — найти сотрудников, которые получают больше средней зарплаты:

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;

Обратите внимание на варианты использования:

  • Скалярные значения — простые сравнения (>, <, =)
  • Когда нужно сопоставить несколько столбцов
  • Когда нужно выполнить запрос к результирующему набору
challenge icon

Задание

Легко

Доступные таблицы и столбцы:

  • shop: price, quantity, category, list_date

Найдите категории, в которых общее количество больше среднего значения всех количеств в магазине.

Важно: Вы должны использовать подзапрос внутри предложения HAVING, чтобы вычислить среднее значение. Не используйте жёстко заданное значение или отдельный запрос: подзапрос должен вычислять AVG(quantity) непосредственно из таблицы shop внутри HAVING.

Шаги решения:

  1. Сначала напишите подзапрос, который вычисляет среднее значение всех количеств в магазине: SELECT AVG(quantity) FROM shop
  2. Затем для каждой категории просуммируйте её количества и сравните с этим подзапросом, используя ключевое слово HAVING

Попробуйте сами

quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Основы

Потренируйтесь самостоятельно: Песочница SQL