
Jak działa AVG w języku SQL? Przykłady zastosowania
Pracując z bazami danych, często musimy obliczać średnie wartości różnych zestawów danych. W SQL służy do tego funkcja AVG(). Jest to funkcja agregująca, która ułatwia uzyskanie średnich wartości z wybranej kolumny tabeli. W tym artykule przyjrzymy się dokładnie, jak działa AVG w SQL, jak jej używać i jakie pułapki mogą nas spotkać podczas jej stosowania.
Podstawowa składnia AVG w SQL
Podstawowa składnia funkcji AVG() jest bardzo prosta:
SELECT AVG(kolumna) FROM nazwa_tabeli;
Funkcja bierze wartości numeryczne z określonej kolumny, sumuje je i dzieli przez liczbę rekordów (ignorując wartości NULL). Przykładowo, jeśli mamy tabelę produkty z cenami, możemy obliczyć średnią cenę wszystkich produktów:
SELECT AVG(cena) AS srednia_cena FROM produkty;
AVG a wartości NULL
Jednym z kluczowych aspektów funkcji AVG() jest jej sposób traktowania wartości NULL. Funkcja nie bierze pod uwagę rekordów, w których dana kolumna zawiera wartość NULL. Zobaczmy to na przykładzie:
| ID | Cena |
|---|---|
| 1 | 100 |
| 2 | 200 |
| 3 | NULL |
| 4 | 300 |
Jeśli obliczymy średnią cenę, SQL nie uwzględni rekordu o wartości NULL:
SELECT AVG(cena) FROM produkty;
Wartość zwrócona wyniesie (100 + 200 + 300) / 3 = 200, a nie (100 + 200 + 300) / 4 = 150.
Obliczanie średniej w grupach
Jeśli chcemy obliczyć średnie wartości dla różnych grup danych, możemy użyć GROUP BY. Przykładowo, mamy tabelę pracownicy i chcemy sprawdzić średnie wynagrodzenie w poszczególnych działach:
SELECT dzial, AVG(wynagrodzenie) AS srednie_wynagrodzenie
FROM pracownicy
GROUP BY dzial;
Dzięki tej składni SQL podzieli dane na grupy według kolumny dzial, a następnie obliczy średnią w każdej z nich.
AVG a precyzja wyników
Funkcja AVG() może zwracać wartości o różnych typach danych w zależności od typu kolumny. W bazach takich jak MySQL czy PostgreSQL wynik może być zwrócony jako liczba zmiennoprzecinkowa, szczególnie gdy operujemy na liczbach całkowitych. Aby upewnić się, że wynik jest w oczekiwanym formacie, można rzutować wynik:
SELECT CAST(AVG(cena) AS DECIMAL(10,2)) FROM produkty;
AVG w połączeniu z innymi funkcjami
AVG() może być łączona z innymi funkcjami SQL, takimi jak ROUND() czy COUNT(), aby ustandaryzować format wyniku:
SELECT ROUND(AVG(cena), 2) FROM produkty;
Lub sprawdzić, ile wartości było podstawą do obliczenia średniej:
SELECT COUNT(cena), AVG(cena) FROM produkty;
Podsumowanie
Funkcja AVG() w SQL to potężne narzędzie do analizy danych, które pozwala łatwo obliczać średnie wartości. Należy jednak pamiętać o kilku kwestiach:
- Ignoruje wartości
NULL. - Można jej używać w połączeniu z
GROUP BY, aby obliczać średnie w grupach. - W zależności od silnika bazy danych wynik może mieć różną precyzję.
- Warto rozważyć rzutowanie wartości, jeśli potrzebujemy określonego formatu liczbowego.
Znajomość tych zasad pozwoli uniknąć błędów i sprawnie korzystać z funkcji AVG() w analizie danych SQL.
Inny ciekawy artykuł:
Jak działa SUM w języku SQL? Przykłady zastosowania
Opanuj SQL z moim kursem!
Poznasz zarówno podstawy, jak i zaawansowane zapytania analityczne (CTE, subqueries, window functions). Nauczysz się pracować na różnych silnikach – na kursie pracujemy zarówno na MySQL, jak i na Postgres. Wszystko zainstalujemy na Twoim komputerze, plus dostaniesz mnóstwo zestawów danych do ćwiczeń.
Zostań analitykiem danych – dołącz do KajoDataSpace!
Najlepsza ścieżka do zawodu analityka danych. Dostęp do pełnych wersji kursów online z Excela, SQLa, PowerBI, Tableau i Pythona z certyfikatami!
🟨 Ekskluzywana ale pomagająca sobie społeczność.
🟩 Ponad 75 godzin materiałów video.
🟨 Spotkania LIVE co miesiąc.
🟩 Mój osobisty mentoring.

