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

Задание

Легко

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

  • <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

Вложенный запрос выполняется первым и возвращает одно значение, которое можно использовать в основном запросе для каждой строки.

Распространенные случаи использования:

  • Сравнение каждого значения со средним
  • Вычисление процента от общего
  • Нахождение разностей от максимальных или минимальных значений

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

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

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

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