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 WHERE
sette et radfilter før gruppering, og med hjelpen HAVING
kan 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
HAVING
kan 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.
- 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 betingelsen
WHERE
- Trinn 2 - gruppering
- Gruppering blir deretter brukt på resultatene.
- Under gruppering kan felter som
COUNT(*)
. - Til slutt brukes et filter på grupperingsresultatet
HAVING
. - Trinn 3 - sortering
- Radene som ble oppnådd i de foregående trinnene er sortert med
ORDER BY
.
Til slutt kan resultatet trimmes med LIMIT
og OFFSET
.