Menu
Coddy logo textTech

Встроенные агрегатные функции. Часть 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. Поиск различий относительно максимальных или минимальных значений

challenge icon

Задание

Легко

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

  • items: id, price

Рассчитайте, насколько цена каждого элемента превышает среднюю цену всех элементов. Выведите идентификатор элемента, его цену и разницу со средней ценой. Назовите столбец разницы diff_from_avg.

Отсортируйте результаты по разнице в порядке убывания.

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

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

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

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

Потренируйтесь самостоятельно: Песочница SQL