Menu
Coddy logo textTech

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

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

Подзапросы позволяют нам объединять несколько запросов в один. Например, рассмотрим следующую <strong>employees</strong> таблицу:

ИДЗарплата
148
234
346
413
528

Нам нужен подзапрос, потому что мы не можем использовать WHERE salary > AVG(salary) напрямую, поскольку агрегатные функции, такие как AVG(), не могут использоваться в предложении WHERE — они могут использоваться только после группировки данных.

SELECT id, salary
FROM employees
WHERE salary > (
    SELECT AVG(salary)
    FROM employees
);

Подзапрос помогает нам найти сотрудников, которые зарабатывают больше средней зарплаты компании, сначала вычисляя среднее значение (внутренний запрос), а затем используя это значение для фильтрации сотрудников (внешний запрос).

Поскольку среднее равно: (48 + 34 + 46 + 13 + 28) / 5 = 33.8, это результат запроса:

идзарплата
148
234
346
challenge icon

Задание

Легко

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

  • <strong>shop</strong>: <strong>price</strong>, <strong>quantity</strong>, <strong>category</strong>, <strong>list_date</strong>

Напишите запрос для поиска всех товаров (выберите все столбцы), где цена выше средней цены всех товаров.

Используйте подзапрос в условии WHERE для расчёта средней цены, а затем сравните цену каждого товара с этой средней.

Шпаргалка

Подзапросы позволяют объединять несколько запросов в один. Они полезны, когда вы не можете использовать агрегатные функции, такие как AVG(), непосредственно в предложении WHERE.

Базовый синтаксис подзапроса:

SELECT column1, column2
FROM table_name
WHERE column1 > (
    SELECT AVG(column1)
    FROM table_name
);

Подзапрос (внутренний запрос) выполняется первым для вычисления среднего значения, затем внешний запрос использует этот результат для фильтрации данных.

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

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

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

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