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 WHEREa csoportosítás előtti sorszűrő beállítását teszi lehetővé, a segítségével pedig HAVINGolyan 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

HAVINGcsak 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. 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ételnekWHERE
  2. 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. 3. szakasz - válogatás
    • Az előző lépésekben kapott sorokat a rendszer a segítségével rendezi ORDER BY.

LIMITVégül az eredményt a és gombokkal lehet levágni OFFSET.