Перейти к основному содержимому

SQL MAX

Агрегатная функция SQL MAX позволяет вычислить максимальное значение из столбца. Этот вид измерения полезен для понимания распределения значений столбца, определения самых последних временных меток ключевых событий и создания булевых значений из операторов CASE WHEN для упрощения полуструктурированных данных.

Как использовать функцию SQL MAX в запросе

Используйте следующий синтаксис, чтобы найти максимальное значение поля:

max(<field_name>)

Поскольку MAX является агрегатной функцией, вам понадобится оператор GROUP BY в вашем запросе, если вы хотите получить подсчеты, разбитые по измерениям. Если вы вычисляете максимальное значение полей без необходимости разбивать их по другому полю, оператор GROUP BY не нужен.

MAX также может использоваться как оконная функция для работы с указанными или разделенными строками.

Давайте рассмотрим практический пример использования MAX и GROUP BY ниже.

Пример использования MAX

Следующий пример выполняет запрос из образца набора данных, созданного dbt Labs, под названием jaffle_shop:

select
date_part('month', order_date) as order_month,
max(amount) as max_amount
from {{ ref('orders') }}
group by 1

Этот простой запрос может быть выполнен на этапе начального исследования данных; он вернет максимальную сумму заказа amount за каждый месяц заказа, который появляется в таблице orders магазина Jaffle:

order_monthmax_amount
158
230
356
426
Loading table...

Синтаксис функции SQL MAX в Snowflake, Databricks, BigQuery и Redshift

Все современные хранилища данных поддерживают возможность использования функции MAX (и следуют одному и тому же синтаксису!).

Примеры использования функции MAX

Чаще всего мы видим запросы с использованием MAX для:

  • Выполнить первичное исследование данных в наборе данных, чтобы понять распределение значений в столбцах.
  • Определить самый поздний временной штамп для ключевых событий (например, max(login_timestamp_utc) as last_login).
  • Создать описательные булевы значения с помощью выражений case when (например, max(case when status = 'complete' then 1 else 0 end) as has_complete_order).
  • Определить самый поздний временной штамп из таблицы, чтобы корректно фильтровать строки при инкрементальной сборке моделей.

Это не исчерпывающий список сценариев, в которых ваша команда может использовать MAX в процессе разработки, в моделях dbt и логике BI‑инструментов, но он охватывает некоторые распространённые ситуации, с которыми аналитические инженеры сталкиваются в повседневной работе.

Нашли ошибку?

0
Loading