Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Oppiskele HAVING-Ehto | Ryhmittely
Keskitaso SQL

bookHAVING-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ä:

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

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:

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

Saimme vastauksena yhden osaston käyttämällä HAVING-ehtoa, jossa asetimme ehdon sarakkeelle, jonka mukaan tiedot ryhmiteltiin.

Note
Huomautus

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:

  1. WHERE-ehtoa käytetään ennen tietojen aggregointia, kun taas HAVING-ehtoa käytetään aggregoinnin jälkeen;
  2. WHERE-ehto kirjoitetaan ennen GROUP BY -lausetta, kun taas HAVING-ehto kirjoitetaan GROUP 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.

Tehtävä

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, joissa COUNT(grade) > 1.
  • Järjestä tulokset student_surname-sarakkeen mukaan.

Ratkaisu

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

close

bookHAVING-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ä:

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

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:

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

Saimme vastauksena yhden osaston käyttämällä HAVING-ehtoa, jossa asetimme ehdon sarakkeelle, jonka mukaan tiedot ryhmiteltiin.

Note
Huomautus

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:

  1. WHERE-ehtoa käytetään ennen tietojen aggregointia, kun taas HAVING-ehtoa käytetään aggregoinnin jälkeen;
  2. WHERE-ehto kirjoitetaan ennen GROUP BY -lausetta, kun taas HAVING-ehto kirjoitetaan GROUP 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.

Tehtävä

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, 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

some-alt