SQLPytanie 02 z 14
GROUP BY i HAVING — menedżer z co najmniej 2 osobami
Najpierw odpowiedz na głos lub w myślach, potem porównaj.
Odpowiedź
Grupuję pracowników według przełożonego i filtruję już policzone grupy.
SQL
-- employees(id, name, manager_id)
SELECT manager_id, COUNT(*) AS team_size
FROM employees
WHERE manager_id IS NOT NULL
GROUP BY manager_id
HAVING COUNT(*) >= 2;Doprecyzowanie: WHERE usuwa wiersze przed agregacją, HAVING filtruje jej wyniki. To są bezpośredni podwładni, nie wszystkie osoby niżej w hierarchii.
Pułapka: przy późniejszym JOIN do tabeli 1:N można zwielokrotnić pracowników i zawyżyć licznik.
Jak poszło? Bądź szczery — „Jeszcze nie” dodaje pytanie do powtórki.