Sobes.tech
Junior — Middle

Jaka jest różnica między warunkiem HAVING a warunkiem WHERE podczas pracy z zapytaniami SQL?

sobes.tech AI

Odpowiedź od AI

Główna różnica między WHERE a HAVING w SQL:

  • WHERE filtruje wiersze przed grupowaniem (GROUP BY). Dotyczy pojedynczych rekordów tabeli.
  • HAVING filtruje grupy po wykonaniu grupowania. Używa się go do warunków na funkcje agregujące (np. COUNT, SUM).

Przykład:

SELECT dział, COUNT(*) as liczba_pracowników
FROM pracownicy
WHERE pensja > 50000    -- filtrujemy pracowników z pensją powyżej 50000
GROUP BY dział
HAVING COUNT(*) > 10     -- wybieramy działy, w których jest więcej niż 10 pracowników

Tutaj WHERE wybiera wiersze do grupowania, a HAVING filtruje już pogrupowane dane.