5.1 VONATKOZÁSI nyilatkozat
Van egy másik hasznos operátor az SQL-ben, amelyet a -val együtt használnak GROUP BY
, ez a neve HAVING
.
Jelentésében teljesen analóg az operátorral WHERE
. Csak WHERE
a csoportosítás előtti sorszűrő beállítását teszi lehetővé, a segítségével pedig HAVING
olyan szűrőt állíthatunk be, amelyet a csoportosítás után alkalmazunk a rekordokra.
A lekérdezés általános nézete a csoportosítás és a csoportosítási eredmények szűrése esetén a következő:
SELECT columns
FROM table
WHERE condition
GROUP BY columns
HAVING condition
HAVING
csak akkor használható, ha a kérés tartalmazza GROUP BY
.
Írjunk lekérdezést, ahol megjelenítjük a felvett alkalmazottak számát évenként.
SELECT
YEAR(join_date) AS hire_year,
COUNT(*) AS total
FROM employee
GROUP BY hire_year
És ennek a lekérdezésnek az eredménye:
bérlés_év | teljes |
---|---|
2012 | 1 |
2013 | 1 |
2014 | 1 |
2015 | 2 |
2018 | 1 |
És most kizárjuk belőle azokat az éveket, amikor egy vagy kevesebb alkalmazottat vettek fel. Példa:
SELECT
YEAR(join_date) AS hire_year,
COUNT(*) AS total
FROM employee
GROUP BY hire_year
HAVING total > 1
És ennek a lekérdezésnek az eredménye:
bérlés_év | teljes |
---|---|
2015 | 2 |
5.3 A nyilatkozatok végrehajtásának rendje
A helyes és hatékony SQL-lekérdezések írásához meg kell értenie, hogyan hajtja végre azokat az SQL-kiszolgáló.
A műveletek végrehajtásának eljárása szigorúan szabályozott, és nem függ az Ön vágyától. Nem rendezheti át az operátorokat és nem kaphat más sorrendet.
Az SQL-lekérdezés több szakaszban, ebben a sorrendben kerül végrehajtásra.
- 1. szakasz – sorok beolvasása
- Először a megadott táblázat összes sora ki van jelölve.
- Ezután a számított mezők hozzáadódnak hozzájuk.
- És akkor az összes sorból csak azok maradnak, amelyek megfelelnek a feltételnek
WHERE
- 2. szakasz - csoportosítás
- Ezután csoportosítást alkalmazunk az eredményekre.
- A csoportosítás során a mezők, mint pl
COUNT(*)
. - Végül a rendszer egy szűrőt alkalmaz a csoportosítás eredményére
HAVING
. - 3. szakasz - válogatás
- Az előző lépésekben kapott sorokat a rendszer a segítségével rendezi
ORDER BY
.
LIMIT
Végül az eredményt a és gombokkal lehet levágni OFFSET
.
GO TO FULL VERSION