Menu
Coddy logo textTech

Агрегатные функции

Часть раздела Основы путешествия по SQL на Coddy — урок 68 из 72.

Агрегатные функции используются для вычисления AVG(), MAX() или любой другой агрегатной функции вплоть до текущей строки.
Например, мы можем рассчитать максимальную выручку, полученную до каждого конечного периода:

месяцвыручкарегион
440Восток
520Восток
660Запад
755Запад
861Восток
SELECT month, revenue, MAX(revenue) OVER (ORDER BY month ASC) as max_revenue
from table1

Это вернет:

месяцвыручкамакс. выручка
44040
52040
66060
75560
86161

Для 4-го и 5-го месяцев максимальная выручка составляет 40, для 6-го и 7-го месяцев она составляет 60, а для 8-го месяца — 61. Это происходит потому, что когда находится новая, более высокая выручка, старая отбрасывается и используется самая большая на текущий момент.

Для функции AVG() это будет выглядеть так:

SELECT month, revenue, AVG(revenue) OVER (ORDER BY month ASC) as avg_revenue
from table1
месяцвыручкасредняя_выручка
44040
52030
66040
75543.75
86147.2

Мы также можем группировать наши вычисления по определенным категориям с помощью PARTITION BY. Например:

SELECT month, revenue, region,
MAX(revenue) OVER (PARTITION BY region ORDER BY month ASC) as max_revenue
FROM table1

Даст нам:

monthrevenueregionmax_revenue
440Восток40
520Восток40
660Запад60
755Запад60
861Восток61

Теперь максимум рассчитывается отдельно для каждого региона. Восточный регион и Западный регион поддерживают свои собственные текущие максимумы независимо друг от друга.

challenge icon

Задание

Легко

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

  • <strong>books</strong>: <strong>book</strong>, <strong>page</strong>, <strong>words</strong>

Для каждой книги выведите название книги, общее количество страниц, количество слов на каждой странице и рассчитайте:

  1. Максимальное количество слов, найденное на любой странице этой книги
  2. Среднее количество слов на страницу для всей книги
  3. Разницу между количеством слов на текущей странице и средним количеством слов в книге на страницу

Выведите результаты, отсортированные по названию книги и номеру страницы.

Верните следующие столбцы:

  • book
  • page
  • words
  • max_words_in_book
  • avg_words_per_page
  • diff_from_avg

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

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

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

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