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