0Pricing
SQL Academy · Урок

COUNT, SUM, AVG, MIN, MAX

Используйте пять основных агрегатных функций, разберитесь с различиями COUNT(*) и COUNT(столбец) и узнайте, как каждая из них обрабатывает NULL

«COUNT, SUM, AVG, MIN, MAX» — бесплатный урок SQL Academy на CoddyKit. Это урок 1 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения SQL Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс SQL Academy содержит 4 уроков всего.

Что делают агрегатные функции

Агрегатная функция объединяет множество строк в одно значение. Примеры: общий доход, средняя оценка, максимальная дата.

COUNT

Подсчитывает строки. Есть два варианта:

SELECT COUNT(*)         FROM users;          -- counts ALL rows
SELECT COUNT(email)     FROM users;          -- counts rows where email IS NOT NULL
SELECT COUNT(DISTINCT country) FROM users;   -- distinct non-NULL countries

SUM

Суммирует числовой столбец. NULL пропускаются:

SELECT SUM(total) FROM orders;
SELECT SUM(total) FROM orders WHERE user_id = 42;

AVG

Вычисляет среднее арифметическое. NULL пропускаются, поэтому AVG(x) равно SUM(x)/COUNT(x), а не SUM(x)/COUNT(*):

SELECT AVG(rating) FROM reviews;

MIN и MAX

Наименьшее и наибольшее значение, отличное от NULL. Работает с числами, датами, строками — со всем, что можно сравнивать:

SELECT MIN(created_at), MAX(created_at) FROM orders;
SELECT MIN(name), MAX(name) FROM users;   -- alphabetic

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

Все агрегатные функции, кроме COUNT(*), пропускают входные значения NULL. AVG, SUM, MIN, MAX возвращают NULL, если входных значений, отличных от NULL, нет.

-- Suppose the table is empty or all rating is NULL:
SELECT AVG(rating) FROM reviews;   -- NULL

Объединение агрегатных функций

Несколько агрегатных функций в одном запросе — все они видят одну и ту же группу:

SELECT COUNT(*)      AS orders,
       SUM(total)    AS revenue,
       AVG(total)    AS avg_order,
       MIN(total)    AS smallest,
       MAX(total)    AS biggest
FROM orders
WHERE created_at >= NOW() - INTERVAL '30 days';

DISTINCT внутри агрегатных функций

Применяйте DISTINCT перед агрегацией:

SELECT COUNT(DISTINCT user_id) AS unique_buyers,
       SUM(DISTINCT total)     AS sum_of_distinct_totals
FROM orders;

Агрегатные функции без GROUP BY

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

Фильтрация перед агрегацией

WHERE сужает набор входных строк до того, как они будут агрегированы:

-- Average of only large orders:
SELECT AVG(total) FROM orders WHERE total > 100;

Предложение FILTER (PostgreSQL)

Добавляйте отдельные фильтры для агрегатных функций с помощью предложения FILTER:

SELECT
  COUNT(*)                                AS total_orders,
  COUNT(*) FILTER (WHERE status = 'paid')  AS paid_orders,
  SUM(total) FILTER (WHERE status = 'paid') AS paid_revenue
FROM orders;

Итоги

Пять основных агрегатных функций: COUNT, SUM, AVG, MIN, MAX.

  • COUNT(*) подсчитывает строки, а COUNT(col) пропускает NULL
  • Остальные агрегатные функции пропускают входные значения NULL
  • Сочетайте их с WHERE / FILTER для условной агрегации

Быстрая проверка

Предположим, что rating равен NULL для 100 из 500 строк. На что делит AVG(rating)?

Часто задаваемые вопросы

Урок «COUNT, SUM, AVG, MIN, MAX» бесплатный?

Да — полный текст урока «COUNT, SUM, AVG, MIN, MAX» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс SQL Academy, подпишись на CoddyKit PRO. Курс SQL Academy содержит 4 уроков всего.

Чему я научусь в уроке «COUNT, SUM, AVG, MIN, MAX»?

Используйте пять основных агрегатных функций, разберитесь с различиями COUNT(*) и COUNT(столбец) и узнайте, как каждая из них обрабатывает NULL Ты практикуешь SQL Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать SQL Academy?

Предыдущий опыт не требуется. SQL Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 1 из 4.

Сколько времени занимает урок «COUNT, SUM, AVG, MIN, MAX»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке SQL Academy?

Да. Каждый урок SQL Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. COUNT, SUM, AVG, MIN, MAX
  2. GROUP BY для одного и нескольких столбцов
  3. HAVING и WHERE
  4. Распространённые ошибки: NULL в агрегатах
← Назад к SQL Academy