Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Oppiskele Haaste: HAVING-lause | Ryhmittely
SQL Jatkotaso
Osio 1. Luku 6
single

single

Haaste: HAVING-lause

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ä.

Rutiinitarkistusten 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 voit tehdä tämän. Voisit aloittaa miettimällä, että tämän voi tehdä käyttämällä WHERE-lausetta, ja se näyttäisi suunnilleen tältä:

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

Kuten huomaat, saamme virheilmoituksen, joka osoittaa, että et voi käyttää aggregaattifunktioita WHERE-ehdon sisällä. Tässä kohtaa tarvitset HAVING-ehdon.

Oletetaan, että sinun täytyy hakea osastot, joissa työntekijöiden keskiarvopalkka on alle 70 000 dollaria vuodessa. Tämän saavuttamiseksi tarvitsemme aggregaattifunktion ja HAVING-ehdon:

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

Tuloksena on yksi osasto vastauksena käyttämällä HAVING-lausetta, jossa asetetaan ehto sarakkeelle, jota käytetään ryhmittelyssä.

Note
Huomio

Tietojen aggregoinnin käyttö HAVING-lauseessa edellyttää, että kyselyssä on tietojen ryhmittely. Kuten yllä olevassa kyselyssä, ryhmittelimme tiedot department-sarakkeen mukaan.

Tässä on yleistetty syntaksi HAVING-lauseelle 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-lauseiden välillä sekä siihen, milloin kumpaakin käytetään:

  1. WHERE-lausetta käytetään ennen tietojen aggregointia, kun taas HAVING-lausetta käytetään aggregoinnin jälkeen;
  2. WHERE-lause kirjoitetaan ennen GROUP BY -lausetta, kun taas HAVING-lause kirjoitetaan GROUP BY -lauseen jälkeen.

Nämä ovat kaksi tärkeintä eroa, jotka tulee muistaa HAVING-lauseen onnistuneessa käytössä. Nyt palataan koulun antamaan tehtävään.

Tehtävä

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, joilla on useampi kuin yksi arvosanamerkintä. Tulosta käytetään koulun hallinnon toimesta 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, joissa COUNT(grade) > 1.
  • Järjestä tulokset student_surname-sarakkeen mukaan.

Ratkaisu

Switch to desktopVaihda työpöytään todellista harjoitusta vartenJatka siitä, missä olet käyttämällä jotakin alla olevista vaihtoehdoista
Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 1. Luku 6
single

single

Kysy tekoälyä

expand

Kysy tekoälyä

ChatGPT

Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme

some-alt