Встроенные агрегатные функции. Часть 2
Часть раздела Основы путешествия по SQL на Coddy — урок 35 из 72.
Иногда требуется использовать агрегатные функции более сложными способами, например, сравнивая каждую строку с агрегатным значением. Здесь как раз и пригодятся вложенные запросы.
Когда вы хотите выполнять вычисления, которые сочетают отдельные строки с агрегатными значениями, вам нужно использовать вложенный запрос. Вот почему:
Это не сработает:
SELECT value + MIN(value)
FROM table1Причина в том, что агрегатные функции работают с целым столбцом, в то время как ссылка на 'value' пытается работать построчно. Чтобы решить это, мы используем вложенный запрос:
SELECT value + (SELECT MIN(value) FROM table1)
FROM table1Это работает, потому что вложенный запрос (SELECT MIN(value) FROM table1) выполняется первым и возвращает единственное значение, которое затем может быть использовано в основном запросе для каждой строки.
Распространённые случаи использования вложенных агрегатов:
1. Сравнение каждого значения со средним
2. Расчёт процента от общего
3. Нахождение разностей от максимальных или минимальных значений
Задание
ЛегкоДоступные таблицы и столбцы:
<strong>items</strong>:<strong>id</strong>,<strong>price</strong>
Вычислите, насколько цена каждого товара превышает среднюю цену всех товаров. Выведите ID товара, его цену и разницу от среднего. Назовите столбец разницы diff_from_avg.
Отсортируйте результаты по разнице в порядке убывания.
Шпаргалка
При объединении отдельных строк с агрегатными значениями используйте вложенные запросы, потому что агрегатные функции работают с целыми столбцами, в то время как обычные столбцы работают построчно.
Это не сработает:
SELECT value + MIN(value)
FROM table1Вместо этого используйте вложенный запрос:
SELECT value + (SELECT MIN(value) FROM table1)
FROM table1Вложенный запрос выполняется первым и возвращает одно значение, которое можно использовать в основном запросе для каждой строки.
Распространенные случаи использования:
- Сравнение каждого значения со средним
- Вычисление процента от общего
- Нахождение разностей от максимальных или минимальных значений
Попробуйте сами
В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Основы
4Больше ключевых слов
Ключевое слово INКлючевое слово BETWEENКлючевое слово LIKEКлючевое слово ASПовторение - Модели мобильных телефонов2Условия
Основы условийКлючевое слово ANDКлючевое слово ORКлючевое слово NOTКомбинирование нескольких условийСкобкиБулевы значения5Арифметические операции
Математические операторыМатематические столбцыОперация moduloФункция ROUND()3Специальный формат возврата
Значения NULLСортировка результатов, часть 1Сортировка результатов, часть 2Повторение - Фирма по кибербезопасностиОграничение количества записейПовторение - Автозавод6Вводные вызовы
Повторение - Парламентские выборыПовторение - Арест преступника полициейПовторение - Ёмкость для напитков в бареПовторение - Создание новых столбцов