Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære HAVING-Setning | Gruppering
Videregående SQL
Seksjon 1. Kapittel 6
single

single

HAVING-Setning

Sveip for å vise menyen

Skoleinformasjonssystemet gjennomgås for å sikre datakonsistens og nøyaktighet. Som en del av denne gjennomgangen er det tildelt en ny dataanalyseoppgave.

Under rutinemessige kontroller ble det oppdaget at noen elevregistre inneholder mer enn én karakteroppføring, selv om systemet er utformet for å lagre kun én karakter per elev.

Din oppgave er å hjelpe til med å identifisere slike tilfeller for videre intern gjennomgang.

Tenk på hvordan du kan gjøre dette. Du kan starte med å vurdere at dette kan gjøres ved å bruke en WHERE-setning, og det vil se omtrent slik ut:

123
SELECT student_surname FROM student_grades WHERE COUNT(grade) > 1

Men, som du kan se, får vi en feilmelding som indikerer at du ikke kan bruke aggregeringsfunksjoner inne i en WHERE-setning. Dette er grunnen til at du trenger HAVING-setningen.

Anta at du må hente avdelinger der de ansattes gjennomsnittlige lønn er under $70 000 per år. For å oppnå dette må vi bruke en aggregeringsfunksjon og HAVING-setningen:

1234
SELECT department FROM employees GROUP BY department HAVING AVG(salary) < 70000

Resultatet er én avdeling i svaret ved bruk av HAVING-klausulen, der en betingelse settes for kolonnen som brukes til gruppering.

Note
Merk

For å bruke dataaggregering i HAVING-klausulen, må vi ha datagruppering i spørringen vår. Som i spørringen ovenfor, grupperte vi dataene etter kolonnen department.

Her er en mer generell syntaks for HAVING-klausulen og når det er best å bruke den:

SELECT column1, column2 --(optional)
FROM table
GROUP BY column1
HAVING AGG(column_n) --(condition)

-- This will cause an error

Her er en kort oversikt over hovedforskjellen mellom WHERE- og HAVING-setninger, og når du bør bruke hver av dem:

  1. WHERE-setningen brukes før dataaggregering, mens HAVING-setningen brukes etter dataaggregering;
  2. WHERE-setningen skrives før GROUP BY, mens HAVING-setningen skrives etter GROUP BY.

Dette er de to viktigste forskjellene du må huske for å bruke HAVING-setningen riktig. Nå kan du gå tilbake til oppgaven vi fikk av skolen.

Oppgave

Sveip for å begynne å kode

Noen studenter vises flere ganger i karakterregistrene, noe som indikerer dupliserte eller uventede oppføringer i systemet.

Du skal hente etternavnene til alle studenter som har mer enn én karakteroppføring i registrene. Resultatet skal brukes av skoleadministrasjonen for å gjennomgå og eventuelt korrigere dataene.

Returner kun listen over etternavn som oppfyller dette kriteriet, sortert alfabetisk.

Korte instruksjoner

  • Hent kolonnen student_surname.
  • Grupper dataene etter student_surname.
  • Bruk HAVING-setningen for å filtrere resultatene basert på COUNT(grade) > 1.
  • Sorter resultatene etter student_surname.

Løsning

Switch to desktopBytt til skrivebordet for virkelighetspraksisFortsett der du er med et av alternativene nedenfor
Alt var klart?

Hvordan kan vi forbedre det?

Takk for tilbakemeldingene dine!

Seksjon 1. Kapittel 6
single

single

Spør AI

expand

Spør AI

ChatGPT

Spør om hva du vil, eller prøv ett av de foreslåtte spørsmålene for å starte chatten vår

some-alt