5.1 Å ha uttalelse

Det er en annen nyttig operator i SQL som brukes med GROUP BY, den heter HAVING.

I sin betydning er det helt analogt med operatøren WHERE. Den lar deg bare WHEREsette et radfilter før gruppering, og med hjelpen HAVINGkan du sette et filter som brukes på poster etter gruppering.

Den generelle visningen av spørringen når du bruker gruppering og filtrering av grupperingsresultater er som følger:

SELECT columns
FROM table
WHERE condition
GROUP BY columns
HAVING condition

HAVINGkan bare brukes hvis forespørselen inneholder GROUP BY.

La oss skrive en spørring der vi viser antall innleide ansatte etter år.

SELECT
YEAR(join_date) AS hire_year,
COUNT(*) AS total
FROM employee
GROUP BY hire_year

Og resultatet av denne spørringen:

ansettelsesår Total
2012 1
2013 1
2014 1
2015 2
2018 1

Og nå utelukker vi årene da en eller færre ansatte ble ansatt. Eksempel:

SELECT
YEAR(join_date) AS hire_year,
COUNT(*) AS total
FROM employee
GROUP BY hire_year
HAVING total > 1

Og resultatet av denne spørringen:

ansettelsesår Total
2015 2

5.3 Rekkefølge for utførelse av uttalelser

For å skrive korrekte og effektive SQL-spørringer, må du forstå hvordan de utføres av SQL-serveren.

Prosedyren for å utføre handlinger er strengt regulert og avhenger ikke av ditt ønske. Du kan ikke omorganisere operatørene og få en annen rekkefølge.

SQL-spørringen utføres i flere stadier i denne rekkefølgen.

  1. Trinn 1 - henting av rader
    • Først velges alle rader fra den angitte tabellen.
    • Deretter legges beregnede felt til dem.
    • Og av alle radene gjenstår bare de som tilfredsstiller betingelsenWHERE
  2. Trinn 2 - gruppering
    • Gruppering blir deretter brukt på resultatene.
    • Under gruppering kan felter som COUNT(*).
    • Til slutt brukes et filter på grupperingsresultatet HAVING.
  3. Trinn 3 - sortering
    • Radene som ble oppnådd i de foregående trinnene er sortert med ORDER BY.

Til slutt kan resultatet trimmes med LIMITog OFFSET.