Агрегатные функции
Часть раздела Основы путешествия по SQL на Coddy — урок 68 из 72.
Агрегатные функции используются для вычисления AVG(), MAX() или любой другой агрегатной функции вплоть до текущей строки.
Например, мы можем рассчитать максимальную выручку, полученную до каждого конечного периода:
| месяц | выручка | регион |
| 4 | 40 | Восток |
| 5 | 20 | Восток |
| 6 | 60 | Запад |
| 7 | 55 | Запад |
| 8 | 61 | Восток |
SELECT month, revenue, MAX(revenue) OVER (ORDER BY month ASC) as max_revenue
from table1Это вернет:
| месяц | выручка | макс. выручка |
| 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| месяц | выручка | средняя_выручка |
| 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 | Восток | 40 |
| 5 | 20 | Восток | 40 |
| 6 | 60 | Запад | 60 |
| 7 | 55 | Запад | 60 |
| 8 | 61 | Восток | 61 |
Теперь максимум рассчитывается отдельно для каждого региона. Восточный регион и Западный регион поддерживают свои собственные текущие максимумы независимо друг от друга.
Задание
ЛегкоДоступные таблицы и столбцы:
<strong>books</strong>:<strong>book</strong>,<strong>page</strong>,<strong>words</strong>
Для каждой книги выведите название книги, общее количество страниц, количество слов на каждой странице и рассчитайте:
- Максимальное количество слов, найденное на любой странице этой книги
- Среднее количество слов на страницу для всей книги
- Разницу между количеством слов на текущей странице и средним количеством слов в книге на страницу
Выведите результаты, отсортированные по названию книги и номеру страницы.
Верните следующие столбцы:
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