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 і думають, що він бере участь у розрахунках. Це може призвести до неочікуваних результатів.

Коментарі
ЩОБ ПОДИВИТИСЯ ВСІ КОМЕНТАРІ АБО ЗАЛИШИТИ КОМЕНТАР,
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ