Подзапросы. Часть 2
Часть раздела Основы путешествия по SQL на Coddy. Урок 39 из 72.
Существует три основных типа подзапросов:
- Скалярные подзапросы — возвращают одно значение (одна строка, один столбец)
- Строковые подзапросы — возвращают одну строку с несколькими столбцами
- Табличные подзапросы — возвращают несколько строк и столбцов
Например, вот несколько вариантов использования для каждого типа подзапроса:
Скалярный подзапрос — найти сотрудников, которые получают больше средней зарплаты:
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;Обратите внимание на варианты использования:
- Скалярные значения — простые сравнения (>, <, =)
- Когда нужно сопоставить несколько столбцов
- Когда нужно выполнить запрос к результирующему набору
Задание
ЛегкоДоступные таблицы и столбцы:
shop:price,quantity,category,list_date
Найдите категории, в которых общее количество больше среднего значения всех количеств в магазине.
Важно: Вы должны использовать подзапрос внутри предложения HAVING, чтобы вычислить среднее значение. Не используйте жёстко заданное значение или отдельный запрос: подзапрос должен вычислять AVG(quantity) непосредственно из таблицы shop внутри HAVING.
Шаги решения:
- Сначала напишите подзапрос, который вычисляет среднее значение всех количеств в магазине:
SELECT AVG(quantity) FROM shop - Затем для каждой категории просуммируйте её количества и сравните с этим подзапросом, используя ключевое слово
HAVING
Попробуйте сами
В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Основы
4Больше ключевых слов
Ключевое слово INКлючевое слово BETWEENКлючевое слово LIKEКлючевое слово ASПовторение - Модели мобильных телефонов2Условия
Основы условийКлючевое слово ANDКлючевое слово ORКлючевое слово NOTКомбинирование нескольких условийСкобкиБулевы значения5Арифметические операции
Математические операторыМатематические столбцыОперация moduloФункция ROUND()3Специальный формат возврата
Значения NULLСортировка результатов, часть 1Сортировка результатов, часть 2Повторение - Фирма по кибербезопасностиОграничение количества записейПовторение - Автозавод6Вводные вызовы
Повторение - Парламентские выборыПовторение - Арест преступника полициейПовторение - Ёмкость для напитков в бареПовторение - Создание новых столбцовПотренируйтесь самостоятельно: Песочница SQL