Агрегатные функции
Часть раздела Основы путешествия по SQL на Coddy. Урок 68 из 72.
Агрегатные функции используются для вычисления AVG(), MAX() или любой другой агрегатной функции вплоть до текущей строки.
Например, мы можем вычислить максимальный доход, полученный нами до каждого конечного периода:
| месяц | выручка | регион |
| 4 | 40 | East |
| 5 | 20 | East |
| 6 | 60 | West |
| 7 | 55 | West |
| 8 | 61 | East |
SELECT month, revenue, MAX(revenue) OVER (ORDER BY month ASC) as max_revenue
from table1Это вернёт:
| месяц | выручка | max_revenue |
| 4 | 40 | 40 |
| 5 | 20 | 40 |
| 6 | 60 | 60 |
| 7 | 55 | 60 |
| 8 | 61 | 61 |
Для месяцев 4 и 5 максимальная выручка составляет 40, для месяцев 6 и 7 — 60, а для месяца 8 — 61. Это происходит потому, что при обнаружении новой, большей выручки старая отбрасывается и используется самая большая на данный момент.
Для функции AVG() это будет выглядеть так:
SELECT month, revenue, AVG(revenue) OVER (ORDER BY month ASC) as avg_revenue
from table1| месяц | выручка | avg_revenue |
| 4 | 40 | 40 |
| 5 | 20 | 30 |
| 6 | 60 | 40 |
| 7 | 55 | 43.75 |
| 8 | 61 | 47.2 |
Мы также можем группировать наши вычисления по определённым категориям с помощью PARTITION BY. Например:
SELECT month, revenue, region,
MAX(revenue) OVER (PARTITION BY region ORDER BY month ASC) as max_revenue
FROM table1Мы бы получили:
| month | revenue | region | max_revenue |
| 4 | 40 | East | 40 |
| 5 | 20 | East | 40 |
| 6 | 60 | West | 60 |
| 7 | 55 | West | 60 |
| 8 | 61 | East | 61 |
Теперь максимум вычисляется отдельно для каждого региона. Регионы East и West независимо поддерживают собственные текущие максимальные значения.
Задание
ЛегкоДоступные таблицы и столбцы:
books:book,page,words
Для каждой книги выведите название книги, общее количество страниц, количество слов на каждой странице и вычислите:
- Максимальное количество слов на любой странице этой книги
- Среднее количество слов на страницу для всей книги
- Разницу между количеством слов на текущей странице и средним количеством слов на страницу для книги
Выведите результаты, отсортированные по книге и номеру страницы.
Верните следующие столбцы:
bookpagewordsmax_words_in_bookavg_words_per_pagediff_from_avg
Попробуйте сами
В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Основы
4Больше ключевых слов
Ключевое слово INКлючевое слово BETWEENКлючевое слово LIKEКлючевое слово ASПовторение - Модели мобильных телефонов2Условия
Основы условийКлючевое слово ANDКлючевое слово ORКлючевое слово NOTКомбинирование нескольких условийСкобкиБулевы значения5Арифметические операции
Математические операторыМатематические столбцыОперация moduloФункция ROUND()3Специальный формат возврата
Значения NULLСортировка результатов, часть 1Сортировка результатов, часть 2Повторение - Фирма по кибербезопасностиОграничение количества записейПовторение - Автозавод6Вводные вызовы
Повторение - Парламентские выборыПовторение - Арест преступника полициейПовторение - Ёмкость для напитков в бареПовторение - Создание новых столбцов9Несколько таблиц
Базовый JOIN, Часть 1Базовый JOIN, Часть 2Повторение - JOINСамосоединениеПовторение - СамосоединениеОбъединениеУпрощение запросов, ключевое слово WITHПовторение - Запросы WITHПовторение - Подрядчик по недвижимости12Оконные функции, часть 2
Функции RANK и DENSE_RANKПовторение - RANK и DENSE_RANKФункция NTILEАгрегатные функцииКритерии ROWS и RANGEПотренируйтесь самостоятельно: Песочница SQL