Агрегатністандарт SQL

SUM

Додає значення з багатьох рядків і повертає суму.

Синтаксис

SUM(<вираз>)
SUM(DISTINCT <вираз>)

Агрегатна функція: з групи рядків робить одне число — суму. NULL пропускає. Разом із GROUP BY рахує суму окремо для кожної групи: виручку по місяцях, зарплати по відділах.

Дані для прикладів

employees

namedepartmentsalarybonusphone
Emmabackend1200300+44 7700 900123
Liambackend1000NULLNULL
Oliviafrontend1350150+44 7700 900456
Noahfrontend950NULL+44 7700 900789
Sophiadesign1200200NULL

orders

idcreated_atamount
12026-07-03 10:15:00120.50
22026-07-28 18:40:0080.25
32026-08-09 09:05:00199.99
42026-08-21 14:30:0045.00
52026-09-02 11:00:0064.75

Ці таблиці вже створено в пісочниці — приклади нижче працюють із ними. Хочеш повторити у своїй базі — скопіюй SQL.

Уся виручка
SELECT SUM(amount) AS revenue
FROM orders;
revenue
510.49
Фонд зарплат кожного відділу
SELECT department, SUM(salary) AS payroll
FROM employees
GROUP BY department
ORDER BY department;
departmentpayroll
backend2200
design1200
frontend2300
Коли в даних є NULL
SELECT SUM(bonus) AS total_bonus,
SUM(salary + bonus) AS salary_plus_bonus,
SUM(salary) + SUM(bonus) AS sum_of_sums
FROM employees;
total_bonussalary_plus_bonussum_of_sums
65044006350

salary + bonus для Liam і Noah дає NULL, тож їхні зарплати випали з другої суми цілком: 4400 замість 6350.

Зверни увагу

Якщо рядків нема або всі значення NULL, результат — NULL, а не 0. Потрібен нуль — COALESCE(SUM(amount), 0).

NULL усередині виразу «з'їдає» весь рядок: SUM(salary + bonus) не порахує зарплату тих, у кого бонусу нема. Пиши SUM(salary + COALESCE(bonus, 0)).

Схожі функції