CodeGym /Kursy /SQL SELF /Sumowanie danych z SUM() — składnia i przykłady

Sumowanie danych z SUM() — składnia i przykłady

SQL SELF
Poziom 7, Lekcja 2
Dostępny

Wyobraź sobie... Masz mega długą listę zakupów z supermarketu. Chcesz policzyć, ile w sumie wydałeś kasy. Przecież nie będziesz tego sumować ręcznie, nie? A sprzedawcy mają już wszystko w bazie danych. Dlatego dostajesz końcowy paragon z poprawną sumą. Najprawdopodobniej gdzieś w ich apce pomaga im bohaterka dzisiejszego wykładu — funkcja SUM()! To funkcja agregująca, która pozwala sumować wartości w kolumnie typu liczbowego.

Składnia SUM()

Funkcja SUM() wygląda tak prosto, jak jej nazwa, ale rozłóżmy to na czynniki pierwsze:

SELECT SUM(kolumna)
FROM tabela;

Funkcja bierze wszystkie wartości w podanej kolumnie i sumuje je. Ale, powiedzmy sobie szczerze: nie ma tu żadnej magii z sumowaniem tekstów czy dat! Tylko liczby.

Przykłady użycia SUM()

Zacznijmy od prostego przykładu. Będziemy pracować z tabelą salaries, która przechowuje pensje pracowników:

employee_id salary
1 50000
2 60000
3 55000
4 75000

Przykład 1: Sumowanie wszystkich pensji

Chcesz się dowiedzieć, jaki jest całkowity fundusz wynagrodzeń w firmie. Tak to robisz:

SELECT SUM(salary) AS total_salary
FROM salaries;

Wynik:

total_salary
240000

Co tu się wydarzyło? PostgreSQL zsumował wszystkie wartości z kolumny salary (50000 + 60000 + 55000 + 75000) i zwrócił wynik w nowej kolumnie o nazwie total_salary.

Przykład 2: Sumowanie z warunkiem

Załóżmy, że chcesz poznać sumę pensji tylko tych pracowników, którzy zarabiają więcej niż 55 000. Przypomnijmy sobie nasz ulubiony operator WHERE:

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

Wynik:

high_salary_total
135000

Co się tu wydarzyło? Najpierw PostgreSQL zastosował filtr WHERE salary > 55000, zostawiając tylko wiersze z pensjami 60000 i 75000. Potem zsumował te dwie pensje (60000 + 75000).

3. Cechy działania SUM()

Jak NULL wpływa na SUM()? Jak już widzieliśmy, NULL to "nic", i SUM() nie bierze go pod uwagę w obliczeniach. Spójrzmy na tabelę:

employee_id salary
1 50000
2 60000
3 NULL
4 75000

Jeśli będziemy chcieli poznać całkowity fundusz wynagrodzeń:

SELECT SUM(salary) AS total_salary
FROM salaries;

Wynik:

total_salary
185000

Dlaczego "185000", a nie "NULL"? PostgreSQL po prostu ignoruje NULL przy liczeniu sumy.

Przykłady bardziej złożonych zapytań z SUM()

Przykład 1: Sumowanie i filtrowanie w jednym zapytaniu

Wyobraź sobie tabelę sales, która przechowuje dane o sprzedaży. Oto jej struktura:

product_id amount
1 150
2 200
3 NULL
1 100

Chcesz poznać całkowitą sumę sprzedaży amount tylko dla pierwszego produktu product_id = 1:

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

Wynik:

total_sales
150

Przykład 2: Suma i dodatkowe obliczenia

Znowu pracujemy z tabelą salaries. Chcesz się dowiedzieć, o ile fundusz wynagrodzeń przekracza 200 000:

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

Wynik:

surplus
40000

Typowe błędy przy użyciu SUM()

Używanie SUM() do danych nieliczbowych: jeśli przypadkiem spróbujesz zsumować np. wartości tekstowe, dostaniesz błąd. Bądź czujny i sprawdzaj typy danych w swojej kolumnie.

Ignorowanie NULL: często początkujący zapominają o NULL i myślą, że bierze udział w obliczeniach. To może prowadzić do nieoczekiwanych wyników.

2
Zadanie
SQL SELF, poziom 7, lekcja 2
Niedostępne
Sumowanie wszystkich elementów kolumny
Sumowanie wszystkich elementów kolumny
2
Zadanie
SQL SELF, poziom 7, lekcja 2
Niedostępne
Sumowanie z warunkiem
Sumowanie z warunkiem
Komentarze
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION