JavaRush /Курсы /SQL SELF /Введение в агрегатные функции

Введение в агрегатные функции

SQL SELF
7 уровень , 0 лекция
Открыта

Агрегатные функции... Эти штуки — настоящие волшебники в мире анализа данных! Они помогают превращать миллионы строк данных в сжатые и понятные результаты. С их помощью мы можем подсчитывать, находить минимумы и максимумы, усреднять значения и выполнять множество других операций. А теперь давайте разберём всё по порядку.

Агрегатные функции — это специальные функции SQL, которые выполняют операции над группами строк и возвращают единый результат. Е сли провести аналогию, это как если бы вы собрали всю статистику о вашем утреннем кофе, например: сколько чашек вы выпили за неделю, добавили ли сахар или сколько дней подряд добавляли сливки.

Примеры задач, которые решают агрегатные функции:

  • Подсчитать общее количество записей в таблице.
  • Найти минимальные или максимальные значения в числовом столбце.
  • Просуммировать значения в одном из столбцов.
  • Усреднить все значения столбца.
  • Выделить уникальные значения.

Как это работает "под капотом"?

SQL выполняет агрегатную функцию после выборки данных в SELECT. Например, когда вы указываете SUM() или AVG(), SQL сначала собирает данные, а затем выполняет вычисление только для выбранных строк.

Основные агрегатные функции в PostgreSQL

Давайте перейдём к практике и посмотрим на топ5 наших героев:

  1. COUNT() — считает количество строк.
  2. SUM() — суммирует значения числового столбца.
  3. AVG() — вычисляет среднее значение.
  4. MIN() — находит минимальное значение.
  5. MAX() — находит максимальное значение.

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

  1. Подсчёт строк с помощью COUNT()

Функция COUNT() позволяет посчитать общее количество строк в таблице или количество непустых значений в конкретном столбце.

Пример: предположим, у нас есть таблица students, которая хранит информацию о студентах:

id name age grade
1 Otto Art 20 85
2 Maria Chi 22 90
3 Alex Lin 21 78
4 Anna Song 23 NULL

Посчитаем общее количество студентов:

SELECT 
    COUNT(*) AS total_students
FROM students;

Результат:

total_students
4

Теперь посчитаем количество студентов, у которых указан grade:

SELECT 
    COUNT(grade) AS students_with_grades
FROM students;

Результат:

students_with_grades
3

Почему так получилось? Потому что COUNT(column) игнорирует значения NULL.

  1. Суммирование с помощью SUM()

Функция SUM() используется для суммирования всех значений в числовом столбце.

Пример: давайте узнаем, сколько суммарно баллов набрали наши студенты.

SELECT 
    SUM(grade) AS total_grades
FROM students;

Результат:

total_grades
253

Примечание: Если в столбце есть NULL, они просто игнорируются в суммировании.

  1. Среднее значение с помощью AVG()

Функция AVG() вычисляет среднее значение по всем числовым записям в столбце.

Пример: посчитаем средний балл студентов.

SELECT 
    AVG(grade) AS average_grade
FROM students;

Результат:

average_grade
84.33

Вы могли заметить, что NULL снова игнорируются.

  1. Минимум и максимум с MIN() и MAX()

Иногда нужно найти самое маленькое или самое большое значение. Для этого существуют MIN() и MAX().

Пример: Найдём самого младшего и самого старшего студента.

SELECT 
    MIN(age) AS youngest_student, 
    MAX(age) AS oldest_student
FROM students;

Результат:

youngest_student oldest_student
20 23

Подробнее об этих функциях мы поговорим уже в следующих лекциях.

Знакомство с NULL

Про NULL скоро будет отдельная лекция, но если очень коротко, то NULL - это отсутствие значения. Ничего. Пустота. Нулик, как он есть!

Предположим, у нас есть таблица students, которая хранит информацию о студентах:

id name age grade hobbie
1 Otto Art 20 85
2 Maria Chi 22 90 Танцы
3 Alex Lin 21 78
4 Anna Song 23

Имя и возраст есть всегда, а вот оценка и хобби могут отсутствовать. Если в ячейке таблицы вообще нет никакого значения, то про нее говорят, что она содержит NULL. NULL это не число и не строка, это специальное кодовое обозначение, обозначающее отсутствие любого значения.

2
Задача
SQL SELF, 7 уровень, 0 лекция
Недоступна
Список товаров со скидкой
Список товаров со скидкой
2
Задача
SQL SELF, 7 уровень, 0 лекция
Недоступна
Проверка статуса и срока действия подписки
Проверка статуса и срока действия подписки
Комментарии (8)
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
Anemon Уровень 13 Expert
10 августа 2025
🤓
Sergii Kononenko Уровень 16
4 августа 2025
Вы платный продукт предлагаете, позаботьтесь о качестве! Таких косяков уже много, представляю что дальше...
Anemon Уровень 13 Expert
10 августа 2025
Это наименьшее из зол.. хд
Иван Фетисов Уровень 4
10 июля 2025
-- Выбор пользователей с планами "premium" или "basic", у которых подписка еще активна select from subscriptions where plan_type = 'premium' or plan_type = 'basic' and end_date >= current_date Такой запрос проходит без наличия "*"
Евгений Уровень 49 Expert
17 июля 2025
не знаю насчёт местного комплиятора, а вот реальная БД при пустом select возвращает таблицу со строками, но без колонок)
Slevin Уровень 3
1 сентября 2025
Тут главная беда в том, что 'AND' стоит между выражениями без скобок, и потому по логике будет выбираться: - или премиум подписка (пофиг на дату) - или базовая подписка И условие по дате
V Уровень 14
9 июля 2025
ну, вообще-то NULL это далеко не 'нулик'...
Nkls Уровень 1
24 ноября 2025
это вообще не нулик