JavaRush /Курсы /SQL SELF /Суммирование данных с SUM() — синтаксис и примеры

Суммирование данных с SUM() — синтаксис и примеры

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

Представьте себе... У вас есть длиннющий список покупок из супермаркета. Вы хотите подсчитать, сколько в итоге вы потратили денег. Не будете же вы складывать всё вручную, верно? А вот у продавцов всё уже в базе данных. Поэтому вы получаете результирующий чек с правильной суммой. Скорее всего, где-то в их приложении им помогает героиня нашей сегодняшней лекции — функция SUM()! Это агрегатная функция, которая позволяет складывать значения в колонке числового типа.

Синтаксис SUM()

Функция SUM() выглядит так же просто, как её название, но давайте разберём всё по частям:

SELECT SUM(столбец)
FROM таблица;

Функция берет все значения в указанном столбце и суммирует их. Но, скажем прямо: никакого магического сложения текстов или дат тут не будет! Только числа.

Примеры использования SUM()

Давайте начнем с простого примера. Мы будем работать с таблицей salaries, которая хранит зарплаты сотрудников:

employee_id salary
1 50000
2 60000
3 55000
4 75000

Пример 1: Суммирование всех зарплат

Вы хотите узнать общий фонд заработной платы компании. Вот как это сделать:

SELECT SUM(salary) AS total_salary
FROM salaries;

Результат:

total_salary
240000

Что тут произошло? PostgreSQL сложил все значения из столбца salary (50000 + 60000 + 55000 + 75000) и вернул результат в новом столбце с названием total_salary.

Пример 2: Суммирование с условием

Допустим, вы хотите узнать общую зарплату только сотрудников, которые получают больше 55,000. Вспомним наш любимый оператор WHERE:

SELECT SUM(salary) AS high_salary_total
FROM salaries
WHERE salary > 55000;

Результат:

high_salary_total
135000

Что произошло здесь? Сначала PostgreSQL применил фильтр WHERE salary > 55000, оставив только строки с зарплатами 60000 и 75000. Затем он сложил эти две зарплаты (60000 + 75000).

3. Особенности работы SUM()

Как NULL влияет на SUM()? Как мы уже видели, NULL — это "ничто", и SUM() не включает его в расчеты. Рассмотрим таблицу:

employee_id salary
1 50000
2 60000
3 NULL
4 75000

Если мы захотим узнать общий фонд зарплат:

SELECT SUM(salary) AS total_salary
FROM salaries;

Результат:

total_salary
185000

Почему "185000", а не "NULL"? PostgreSQL просто игнорирует NULL при расчете суммы.

Примеры сложных запросов с SUM()

Пример 1: Суммирование и фильтрация в одном запросе

Представьте таблицу sales, которая хранит данные о продажах. Вот её структура:

product_id amount
1 150
2 200
3 NULL
1 100

Вы хотите узнать общую сумму продаж amount только для первого продукта product_id = 1:

SELECT SUM(amount) AS total_sales
FROM sales
WHERE product_id = 1;

Результат:

total_sales
150

Пример 2: Сумма и дополнительные вычисления

Снова работаем с таблицей salaries. Вы хотите узнать, насколько фонд зарплат превышает 200,000:

SELECT SUM(salary) - 200000 AS surplus
FROM salaries;

Результат:

surplus
40000

Типичные ошибки при использовании SUM()

Использование SUM() для нечисловых данных: если вы случайно попытаетесь суммировать, скажем, текстовые значения, то получите ошибку. Будьте аккуратны и проверяйте типы данных в вашем столбце.

Игнорирование NULL: часто новички забывают про NULL и считают, что он участвует в расчетах. Это может привести к неожиданным результатам.

2
Задача
SQL SELF, 7 уровень, 2 лекция
Недоступна
Суммирование всех элементов столбца
Суммирование всех элементов столбца
2
Задача
SQL SELF, 7 уровень, 2 лекция
Недоступна
Суммирование с условием
Суммирование с условием
Комментарии (6)
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
C0N5P1RACY Уровень 41
25 февраля 2026
Не забыть бы про кавычки...
7 ноября 2025
"Типичные ошибки при использовании SUM() Игнорирование NULL: часто новички забывают про NULL и считают, что он участвует в расчетах. Это может привести к неожиданным результатам." Что имеется ввиду? Приведите, пожалуйста, пример.
Slevin Уровень 56
1 сентября 2025
Слишком легко (и повторение первой лекции, да)
Anemon Уровень 13 Expert
13 августа 2025
🤓
Мария Уровень 13
21 июля 2025
слишком много опечаток, практически в каждом уроке встречаются(
Вячеслав Уровень 10
3 июля 2025
В "Примере 1: Суммирование и фильтрация в одном запросе" total_sales = 250, а не 150 ))