Używamy cookies, żeby zwiększyć Twoje doświadczenia na stronie
CodeWorlds

Komnata Zagadek - podzapytania i HAVING

Najgłębsze pytania wymagają pytania w pytaniu. W Komnacie Zagadek poznałeś podzapytania oraz

HAVING
- filtr dla całych grup.

Podzapytanie - pytanie wewnątrz pytania

Podzapytanie to zapytanie zagnieżdżone w innym, najczęściej w nawiasach. Pozwala porównać wiersz z wynikiem osobnego obliczenia:

1SELECT tytul, cena
2FROM ksiazki
3WHERE cena > (SELECT AVG(cena) FROM ksiazki);

Najpierw baza liczy średnią cenę wszystkich książek, a potem zwraca tylko te droższe od niej.

HAVING - filtr po grupowaniu

WHERE
filtruje pojedyncze wiersze przed grupowaniem.
HAVING
filtruje całe grupy już po
GROUP BY
- najczęściej na podstawie wyniku funkcji agregującej:

1SELECT czytelnik_id, COUNT(*) AS liczba
2FROM wypozyczenia
3GROUP BY czytelnik_id
4HAVING COUNT(*) > 2;

To zapytanie zwraca tylko czytelników, którzy wypożyczyli więcej niż dwie książki.

WHERE czy HAVING?

  • Filtrujesz pojedyncze wiersze? →
    WHERE
    .
  • Filtrujesz grupy po policzeniu (np.
    COUNT
    ,
    AVG
    )? →
    HAVING
    .

Te dwa narzędzia razem pozwalają zadawać Bibliotece naprawdę mądre pytania!

Przejdź do CodeWorlds