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:
123SELECT 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:
1234SELECT 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.
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:
WHERE-setningen brukes før dataaggregering, mensHAVING-setningen brukes etter dataaggregering;WHERE-setningen skrives førGROUP BY, mensHAVING-setningen skrives etterGROUP 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.
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
Takk for tilbakemeldingene dine!
single
Spør AI
Spør AI
Spør om hva du vil, eller prøv ett av de foreslåtte spørsmålene for å starte chatten vår