Подзапросы. Часть 1
Часть раздела Основы путешествия по SQL на Coddy — урок 38 из 72.
Подзапросы позволяют нам объединять несколько запросов в один. Например, рассмотрим следующую <strong>employees</strong> таблицу:
| ИД | Зарплата |
|---|---|
| 1 | 48 |
| 2 | 34 |
| 3 | 46 |
| 4 | 13 |
| 5 | 28 |
Нам нужен подзапрос, потому что мы не можем использовать 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, это результат запроса:
| ид | зарплата |
|---|---|
| 1 | 48 |
| 2 | 34 |
| 3 | 46 |
Задание
ЛегкоДоступные таблицы и столбцы:
<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
);Подзапрос (внутренний запрос) выполняется первым для вычисления среднего значения, затем внешний запрос использует этот результат для фильтрации данных.
Попробуйте сами
В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Основы
4Больше ключевых слов
Ключевое слово INКлючевое слово BETWEENКлючевое слово LIKEКлючевое слово ASПовторение - Модели мобильных телефонов2Условия
Основы условийКлючевое слово ANDКлючевое слово ORКлючевое слово NOTКомбинирование нескольких условийСкобкиБулевы значения5Арифметические операции
Математические операторыМатематические столбцыОперация moduloФункция ROUND()3Специальный формат возврата
Значения NULLСортировка результатов, часть 1Сортировка результатов, часть 2Повторение - Фирма по кибербезопасностиОграничение количества записейПовторение - Автозавод6Вводные вызовы
Повторение - Парламентские выборыПовторение - Арест преступника полициейПовторение - Ёмкость для напитков в бареПовторение - Создание новых столбцов