Narzędzia
Portfolio Roadmapa Słownik Blog Portal dla BA
← Słownik
Dane i BI

Agregacja danych (GROUP BY)

Agregacja danych to łączenie wielu wierszy w podsumowania za pomocą funkcji agregujących: COUNT (ile), SUM (suma), AVG (średnia), MIN/MAX (skrajne wartości).

Agregacja danych to łączenie wielu wierszy w podsumowania za pomocą funkcji agregujących: COUNT (ile), SUM (suma), AVG (średnia), MIN/MAX (skrajne wartości). W SQL robi się to klauzulą GROUP BY, która dzieli dane na grupy i liczy wynik osobno dla każdej z nich.

To jedna z najczęściej używanych umiejętności SQL w pracy analityka. Pytania biznesowe prawie zawsze dotyczą podsumowań, nie pojedynczych rekordów: „ile wizyt miesięcznie?", „która placówka ma najwyższy odsetek odwołań?", „średni czas oczekiwania per lekarz?". Bez agregacji odpowiadasz Excelem i godziną klikania; z agregacją - jednym zapytaniem.

Przykład z MediFlow: dyrektor pyta, w której z 12 przychodni pacjenci najczęściej odwołują wizyty.

SELECT przychodnia, COUNT(*) AS odwolane
FROM wizyty
WHERE status = 'odwołana'
GROUP BY przychodnia
ORDER BY odwolane DESC;

Wynik: Mokotów 412, Ursynów 380, reszta poniżej 200. Już wiadomo, gdzie zacząć szukanie przyczyn.

Dwie rzeczy, które mylą początkujących. Pierwsza: każda kolumna w SELECT, która nie jest funkcją agregującą, musi znaleźć się w GROUP BY - inaczej baza zwróci błąd (albo, w MySQL, cichaczem coś wylosuje, co bywa gorsze). Druga: WHERE filtruje wiersze przed agregacją, a HAVING filtruje grupy po niej. „Pokaż przychodnie z ponad 300 odwołaniami" to HAVING COUNT(*) > 300, nie WHERE.

Pojęcia powiązane: SQL, GROUP BY, HAVING, funkcje agregujące, raportowanie.

Rozwijaj się z Analify

Nowe pojęcia, artykuły i materiały - prosto na email. Bez spamu.

Dołącz do społeczności analityków biznesowych - szkolenia wideo, prelekcje na żywo i wsparcie ekspertów

Sprawdź Analify