Funkcje agregujące... Te rzeczy to prawdziwi magicy w świecie analizy danych! Pomagają zamienić miliony wierszy danych w skondensowane i zrozumiałe wyniki. Dzięki nim możemy liczyć, znajdować minimum i maksimum, uśredniać wartości i robić mnóstwo innych rzeczy. No to lecimy po kolei!
Funkcje agregujące — to specjalne funkcje SQL, które wykonują operacje na grupach wierszy i zwracają jeden wynik. Jakby to porównać, to tak jakbyś zebrał całą statystykę o swojej porannej kawie, na przykład: ile filiżanek wypiłeś w tygodniu, czy dodałeś cukier albo ile dni z rzędu dolewałeś śmietanki.
Przykłady zadań, które rozwiązują funkcje agregujące:
- Policzyć całkowitą liczbę rekordów w tabeli.
- Znaleźć minimalne lub maksymalne wartości w kolumnie liczbowej.
- Zsumować wartości w jednej z kolumn.
- Wyliczyć średnią wszystkich wartości w kolumnie.
- Wyodrębnić unikalne wartości.
Jak to działa "pod maską"?
SQL wykonuje funkcję agregującą po pobraniu danych w SELECT. Na przykład, gdy podajesz SUM() albo AVG(), SQL najpierw zbiera dane, a potem wykonuje obliczenie tylko dla wybranych wierszy.
Podstawowe funkcje agregujące w PostgreSQL
No to przejdźmy do praktyki i zobaczmy top 5 naszych bohaterów:
COUNT()— liczy liczbę wierszy.SUM()— sumuje wartości w kolumnie liczbowej.AVG()— wylicza średnią wartość.MIN()— znajduje najmniejszą wartość.MAX()— znajduje największą wartość.
Przykłady użycia funkcji agregujących
- Zliczanie wierszy za pomocą
COUNT()
Funkcja COUNT() pozwala policzyć całkowitą liczbę wierszy w tabeli albo liczbę niepustych wartości w konkretnej kolumnie.
Przykład: załóżmy, że mamy tabelę students, która przechowuje info o studentach:
| id | name | age | grade |
|---|---|---|---|
| 1 | Otto Art | 20 | 85 |
| 2 | Maria Chi | 22 | 90 |
| 3 | Alex Lin | 21 | 78 |
| 4 | Anna Song | 23 | NULL |
Policzmy całkowitą liczbę studentów:
SELECT
COUNT(*) AS total_students
FROM students;
Wynik:
| total_students |
|---|
| 4 |
Teraz policzmy ilu studentów ma wpisaną ocenę (grade):
SELECT
COUNT(grade) AS students_with_grades
FROM students;
Wynik:
| students_with_grades |
|---|
| 3 |
Dlaczego tak wyszło? Bo COUNT(column) ignoruje wartości NULL.
- Sumowanie za pomocą
SUM()
Funkcja SUM() służy do sumowania wszystkich wartości w kolumnie liczbowej.
Przykład: sprawdźmy ile łącznie punktów zdobyli nasi studenci.
SELECT
SUM(grade) AS total_grades
FROM students;
Wynik:
| total_grades |
|---|
| 253 |
Uwaga: Jeśli w kolumnie są NULL, po prostu są ignorowane przy sumowaniu.
- Średnia wartość za pomocą
AVG()
Funkcja AVG() wylicza średnią wartość ze wszystkich liczbowych wpisów w kolumnie.
Przykład: policzmy średnią ocenę studentów.
SELECT
AVG(grade) AS average_grade
FROM students;
Wynik:
| average_grade |
|---|
| 84.33 |
Pewnie zauważyłeś, że NULL znowu są ignorowane.
- Minimum i maksimum z
MIN()iMAX()
Czasem trzeba znaleźć najmniejszą albo największą wartość. Do tego są MIN() i MAX().
Przykład: znajdźmy najmłodszego i najstarszego studenta.
SELECT
MIN(age) AS youngest_student,
MAX(age) AS oldest_student
FROM students;
Wynik:
| youngest_student | oldest_student |
|---|---|
| 20 | 23 |
O tych funkcjach pogadamy szerzej w kolejnych wykładach.
Poznanie NULL
O NULL będzie osobny wykład, ale w skrócie: NULL to brak wartości. Nic. Pustka. Nullik, jak jest!
Załóżmy, że mamy tabelę students, która przechowuje info o studentach:
| id | name | age | grade | hobbie |
|---|---|---|---|---|
| 1 | Otto Art | 20 | 85 | |
| 2 | Maria Chi | 22 | 90 | Taniec |
| 3 | Alex Lin | 21 | 78 | |
| 4 | Anna Song | 23 |
Imię i wiek są zawsze, ale ocena i hobby mogą być puste. Jeśli w komórce tabeli nie ma żadnej wartości, mówi się, że zawiera NULL. NULL to nie liczba i nie string, to specjalne oznaczenie, które znaczy brak jakiejkolwiek wartości.
GO TO FULL VERSION