Перейти к содержанию

Агрегатные функции: COUNT, SUM, AVG, MIN, MAX

Программирование SQL Сложность 1/5

Начало урока

Агрегатные функции: COUNT, SUM, AVG, MIN, MAX

Превращаем целый столбец значений в один полезный ответ

Главная идея: Большинство запросов возвращают много строк. Агрегатная функция устроена иначе: она читает целую группу строк и возвращает одно значение - количество, сумму, среднее, наименьшее или наибольшее.
К концу урока вы сможете:
  • считать строки через COUNT(*) и значения через COUNT(column),
  • складывать столбец через SUM и находить среднее через AVG,
  • находить наименьшее и наибольшее через MIN и MAX,
  • объяснять, как каждая функция обходится со значениями NULL,
  • агрегировать только нужные строки, добавив условие WHERE.

1. Что такое агрегатная функция?

Представьте блендер. Вы кладёте в него целую горсть фруктов, нажимаете кнопку - и получаете один стакан сока. Агрегатная функция работает так же: вы направляете её на целый столбец значений, а она смешивает их в один ответ.

Обычный запрос SELECT price FROM toys показал бы шесть отдельных цен - шесть строк. А SELECT SUM(price) FROM toys читает все шесть цен и возвращает одно число: их сумму. Слово агрегировать просто значит "собрать многое в одно".

Пять самых частых агрегатных функций:

  • COUNT - сколько?
  • SUM - какова сумма?
  • AVG - каково среднее?
  • MIN - какое наименьшее?
  • MAX - какое наибольшее?

2. Наш пример: таблица магазина игрушек

Все запросы ниже работают с одной небольшой таблицей toys. Вот она: создана один раз и заполнена шестью игрушками. Обратите внимание на столбец discount: у двух игрушек скидки пока нет, поэтому их значение равно NULL (то есть "неизвестно / не задано").

CREATE TABLE toys (
  id       INT,
  name     VARCHAR(30),
  price    DECIMAL(5,2),
  stock    INT,
  discount DECIMAL(4,2)
);

INSERT INTO toys VALUES
  (1, 'Teddy Bear', 12.50,  8, NULL),
  (2, 'Race Car',    9.00, 15, 2.00),
  (3, 'Kite',        6.50,  0, NULL),
  (4, 'Puzzle',      4.00, 20, 1.00),
  (5, 'Doll',       15.00,  5, 3.00),
  (6, 'Yo-yo',       3.00, 30, NULL);

Вся таблица выглядит так:

idnamepricestockdiscount
1Teddy Bear12.508NULL
2Race Car9.00152.00
3Kite6.500NULL
4Puzzle4.00201.00
5Doll15.0053.00
6Yo-yo3.0030NULL

Шесть строк, а в столбце discount три настоящих числа и три NULL. Запомните это - для COUNT и AVG это важно.

Продолжите этот урок на YourAIZone

В полном уроке — объяснение целиком, разобранные примеры, частые ошибки, тесты с мгновенной проверкой и ИИ-репетитор. Начните сразу как гость или создайте аккаунт, чтобы сохранять прогресс.

В полном уроке

  • Объяснение целиком
  • Разобранные примеры
  • Частые ошибки и как их избежать
  • Тестовые вопросы: 15
  • ИИ-репетитор, который отвечает на вопросы по теме
  • Отслеживание прогресса для ученика, родителей и учителя