HAVING-Ehto
Koulun tietojärjestelmää tarkastellaan tietojen johdonmukaisuuden ja tarkkuuden varmistamiseksi. Osana tätä tarkastelua on annettu uusi data-analyysitehtävä.
Rutiinitarkastuksissa havaittiin, että joissakin opiskelijatiedoissa on useampi kuin yksi arvosanamerkintä, vaikka järjestelmän on tarkoitus tallentaa vain yksi arvosana opiskelijaa kohden.
Tehtävänäsi on auttaa tunnistamaan tällaiset tapaukset jatkotarkastelua varten.
Pohditaan yhdessä miten tämä voidaan tehdä. Voisit aloittaa miettimällä, että tämän voi 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, saamme virheilmoituksen, joka osoittaa, että emme voi käyttää aggregaattifunktioita WHERE-ehdon sisällä. Tässä kohtaa tarvitsemme HAVING-ehtoa.
Oletetaan, että täytyy hakea osastot, joissa työntekijöiden keskimääräinen palkka 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
Saimme vastauksena yhden osaston käyttämällä HAVING-ehtoa, jossa asetimme ehdon sarakkeelle, jonka mukaan tiedot ryhmiteltiin.
Tietojen aggregoinnin käyttäminen HAVING-ehdon yhteydessä edellyttää, että tiedot on ryhmitelty kyselyssä. Kuten yllä olevassa kyselyssä, tiedot ryhmiteltiin department-sarakkeen mukaan.
Tarkastellaan HAVING-ehdon yleisempää syntaksia ja tilanteita, joissa sen käyttö on suositeltavaa:
SELECT column1, column2 --(optional)
FROM table
GROUP BY column1
HAVING AGG(column_n) --(condition)
Käydään myös lyhyesti läpi pääasiallinen ero WHERE- ja HAVING-ehtolauseiden välillä sekä milloin kumpaakin käytetään:
WHERE-ehtoa käytetään ennen tietojen aggregointia, kun taasHAVING-ehtoa käytetään aggregoinnin jälkeen;WHERE-ehto kirjoitetaan ennenGROUP BY-lausetta, kun taasHAVING-ehto kirjoitetaanGROUP BY-lauseen jälkeen.
Nämä ovat kaksi tärkeintä eroa, jotka tulee muistaa HAVING-ehtolauseen onnistuneessa käytössä. Palataan nyt koulun antamaan tehtävään.
Swipe to start coding
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
Mahtavaa!
Completion arvosana parantunut arvoon 4
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ä.
Rutiinitarkastuksissa havaittiin, että joissakin opiskelijatiedoissa on useampi kuin yksi arvosanamerkintä, vaikka järjestelmän on tarkoitus tallentaa vain yksi arvosana opiskelijaa kohden.
Tehtävänäsi on auttaa tunnistamaan tällaiset tapaukset jatkotarkastelua varten.
Pohditaan yhdessä miten tämä voidaan tehdä. Voisit aloittaa miettimällä, että tämän voi 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, saamme virheilmoituksen, joka osoittaa, että emme voi käyttää aggregaattifunktioita WHERE-ehdon sisällä. Tässä kohtaa tarvitsemme HAVING-ehtoa.
Oletetaan, että täytyy hakea osastot, joissa työntekijöiden keskimääräinen palkka 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
Saimme vastauksena yhden osaston käyttämällä HAVING-ehtoa, jossa asetimme ehdon sarakkeelle, jonka mukaan tiedot ryhmiteltiin.
Tietojen aggregoinnin käyttäminen HAVING-ehdon yhteydessä edellyttää, että tiedot on ryhmitelty kyselyssä. Kuten yllä olevassa kyselyssä, tiedot ryhmiteltiin department-sarakkeen mukaan.
Tarkastellaan HAVING-ehdon yleisempää syntaksia ja tilanteita, joissa sen käyttö on suositeltavaa:
SELECT column1, column2 --(optional)
FROM table
GROUP BY column1
HAVING AGG(column_n) --(condition)
Käydään myös lyhyesti läpi pääasiallinen ero WHERE- ja HAVING-ehtolauseiden välillä sekä milloin kumpaakin käytetään:
WHERE-ehtoa käytetään ennen tietojen aggregointia, kun taasHAVING-ehtoa käytetään aggregoinnin jälkeen;WHERE-ehto kirjoitetaan ennenGROUP BY-lausetta, kun taasHAVING-ehto kirjoitetaanGROUP BY-lauseen jälkeen.
Nämä ovat kaksi tärkeintä eroa, jotka tulee muistaa HAVING-ehtolauseen onnistuneessa käytössä. Palataan nyt koulun antamaan tehtävään.
Swipe to start coding
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