Przejdź do treści głównej
INF.04Bazy Danych i Zarządzanie Danymi (SQL & ORM)

Klauzule GROUP BY i HAVING w SQL

GROUP BY grupuje wiersze o identycznych wartościach w celu wykonania agregacji, a HAVING filtruje zagregowane grupy (w przeciwieństwie do WHERE filtrującego pojedyncze wiersze).

Różnica między WHERE a HAVING:

  • WHERE: Filtruje wiersze przed ich pogrupowaniem i zagregowaniem. Nie może zawierać funkcji agregujących (COUNT, SUM itd.).
  • HAVING: Filtruje grupy po wykonaniu grupowania i obliczeniu funkcji agregujących.
SQL
-- Wybierz wydziały zatrudniające więcej niż 5 pracowników:
SELECT Dzial, COUNT(*) AS LiczbaPracownikow, AVG(Pensja) AS SredniaPensja
FROM Pracownicy
WHERE Status = 'Aktywny'
GROUP BY Dzial
HAVING COUNT(*) > 5;

Chcesz sprawdzić to pojęcie w praktyce?

Przeszukaj pytania z oficjalnych arkuszy CKE powiązane z hasłem Klauzule GROUP BY i HAVING w SQL lub rozpocznij trening.