single
HAVING-Ehto
Pyyhkäise näyttääksesi valikon
Koulun tietojärjestelmää tarkastellaan tietojen johdonmukaisuuden ja tarkkuuden varmistamiseksi. Osana tätä tarkastelua on annettu uusi data-analyysitehtävä.
Rutiinitarkastusten aikana havaittiin, että joissakin opiskelijatiedoissa on useampi kuin yksi arvosanamerkintä, vaikka järjestelmä on suunniteltu tallentamaan vain yksi arvosana opiskelijaa kohden.
Tehtävänäsi on auttaa tunnistamaan tällaiset tapaukset jatkotarkastelua varten.
Pohdi miten tämän voisi tehdä. Voisit aloittaa miettimällä, että tämän voisi toteuttaa käyttämällä WHERE-ehtoa, ja se näyttäisi suunnilleen tältä:
123SELECT student_surname FROM student_grades WHERE COUNT(grade) > 1
Kuten huomaat, saat virheilmoituksen, joka osoittaa, että et voi käyttää aggregaattifunktioita WHERE-ehdon sisällä. Tässä kohtaa tarvitaan HAVING-ehtoa.
Oletetaan, että haluat hakea osastot, joissa työntekijöiden keskiarvopalkka on alle 70 000 dollaria vuodessa.
Tämän saavuttamiseksi tarvitaan aggregaattifunktiota ja HAVING-ehtoa:
1234SELECT department FROM employees GROUP BY department HAVING AVG(salary) < 70000
Tuloksena on yksi osasto vastauksena käyttäen HAVING-ehtoa, jossa asetetaan ehto sarakkeelle, jota käytetään ryhmittelyssä.
Tietojen aggregoinnin käyttö HAVING-ehdon yhteydessä edellyttää, että tiedot on ryhmitelty kyselyssä. Kuten yllä olevassa kyselyssä, ryhmittelimme tiedot department-sarakkeen mukaan.
Tässä on yleistetty syntaksi HAVING-ehdolle sekä tilanteet, joissa sen käyttö on suositeltavaa:
SELECT column1, column2 --(optional)
FROM table
GROUP BY column1
HAVING AGG(column_n) --(condition)
-- This will cause an error
Tässä on lyhyt katsaus pääeroihin WHERE- ja HAVING-ehtolauseiden välillä sekä siihen, milloin kumpaakin käytetään:
WHERE-ehtolausetta käytetään ennen tietojen aggregointia, kun taasHAVING-ehtolausetta käytetään aggregoinnin jälkeen;WHERE-ehtolause kirjoitetaan ennenGROUP BY-lausetta, kun taasHAVING-ehtolause kirjoitetaanGROUP BY-lauseen jälkeen.
Nämä ovat kaksi tärkeintä eroa, jotka tulee muistaa HAVING-ehtolauseen onnistuneessa käytössä. Palaa nyt koulun antamaan tehtävään.
Pyyhkäise aloittaaksesi koodauksen
Jotkut opiskelijat esiintyvät useita kertoja arvosanarekisterissä, mikä viittaa päällekkäisiin tai odottamattomiin merkintöihin järjestelmässä.
Sinun tulee hakea kaikkien niiden opiskelijoiden sukunimet, joiden tiedoissa on useampi kuin yksi arvosanamerkintä. Tulosta käyttää koulun hallinto tietojen tarkistamiseen ja korjaamiseen tarvittaessa.
Palauta vain niiden sukunimien lista, jotka täyttävät tämän ehdon, aakkosjärjestyksessä.
Lyhyet ohjeet
- Hae
student_surname-sarake. - Ryhmittele tiedot
student_surname-sarakkeen mukaan. - Käytä
HAVING-ehtoa suodattaaksesi tulokset, joissaCOUNT(grade) > 1. - Järjestä tulokset
student_surname-sarakkeen mukaan.
Ratkaisu
Kiitos palautteestasi!
single
Kysy tekoälyä
Kysy tekoälyä
Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme