SQLite - HAVING Clause
Klauzula HAVING umożliwia określenie warunków, które filtrują wyniki grup, które pojawiają się w wynikach końcowych.
Klauzula WHERE umieszcza warunki w wybranych kolumnach, podczas gdy klauzula HAVING umieszcza warunki na grupach utworzonych klauzulą GROUP BY.
Składnia
Poniżej znajduje się pozycja klauzuli HAVING w zapytaniu SELECT.
SELECT
FROM
WHERE
GROUP BY
HAVING
ORDER BY
Klauzula HAVING musi występować po klauzuli GROUP BY w zapytaniu i musi również poprzedzać klauzulę ORDER BY, jeśli jest używana. Poniżej znajduje się składnia instrukcji SELECT, w tym klauzula HAVING.
SELECT column1, column2
FROM table1, table2
WHERE [ conditions ]
GROUP BY column1, column2
HAVING [ conditions ]
ORDER BY column1, column2
Przykład
Weź pod uwagę tabelę COMPANY z następującymi rekordami.
ID NAME AGE ADDRESS SALARY
---------- ---------- ---------- ---------- ----------
1 Paul 32 California 20000.0
2 Allen 25 Texas 15000.0
3 Teddy 23 Norway 20000.0
4 Mark 25 Rich-Mond 65000.0
5 David 27 Texas 85000.0
6 Kim 22 South-Hall 45000.0
7 James 24 Houston 10000.0
8 Paul 24 Houston 20000.0
9 James 44 Norway 5000.0
10 James 45 Texas 5000.0
Poniżej znajduje się przykład, który wyświetli rekord, dla którego liczba nazw jest mniejsza niż 2.
sqlite > SELECT * FROM COMPANY GROUP BY name HAVING count(name) < 2;
Spowoduje to następujący wynik.
ID NAME AGE ADDRESS SALARY
---------- ---------- ---------- ---------- ----------
2 Allen 25 Texas 15000
5 David 27 Texas 85000
6 Kim 22 South-Hall 45000
4 Mark 25 Rich-Mond 65000
3 Teddy 23 Norway 20000
Poniżej znajduje się przykład, w którym zostanie wyświetlony rekord, dla którego liczba nazw jest większa niż 2.
sqlite > SELECT * FROM COMPANY GROUP BY name HAVING count(name) > 2;
Spowoduje to następujący wynik.
ID NAME AGE ADDRESS SALARY
---------- ---------- ---------- ---------- ----------
10 James 45 Texas 5000