HAVING-Clausule
Het informatiesysteem van de school wordt herzien om gegevensconsistentie en nauwkeurigheid te waarborgen. Als onderdeel van deze herziening is een nieuwe data-analysetaak toegewezen.
Tijdens routinematige controles werd ontdekt dat sommige leerlingendossiers meer dan één cijfervermelding bevatten, terwijl het systeem is ontworpen om slechts één cijfer per leerling op te slaan.
De opdracht is om dergelijke gevallen te identificeren voor verder intern onderzoek.
Laten we samen nadenken over hoe we dit kunnen aanpakken. Je zou kunnen beginnen met de overweging dat we dit met een WHERE-clausule kunnen doen, en het zou er ongeveer zo uitzien:
123SELECT student_surname FROM student_grades WHERE COUNT(grade) > 1
Maar, zoals je ziet, krijgen we een foutmelding die aangeeft dat we geen aggregatiefuncties kunnen gebruiken binnen een WHERE-clausule. Hiervoor hebben we de HAVING-clausule nodig.
Stel dat we de afdelingen willen ophalen waar het gemiddelde salaris van werknemers lager is dan $70.000 per jaar.
Om dit te bereiken, moeten we een aggregatiefunctie en de HAVING-clausule gebruiken:
1234SELECT department FROM employees GROUP BY department HAVING AVG(salary) < 70000
We ontvingen één afdeling als resultaat met behulp van de HAVING-clausule, waarbij we een voorwaarde instelden voor de kolom waarop we de gegevens groepeerden.
Om gegevensaggregatie te gebruiken binnen de HAVING-clausule, moet er gegevensgroepering in onze query zijn. Zoals in de bovenstaande query groepeerden we de gegevens op de kolom department.
Bekijk de meer algemene syntaxis van de HAVING-clausule en wanneer deze het beste kan worden gebruikt:
SELECT column1, column2 --(optional)
FROM table
GROUP BY column1
HAVING AGG(column_n) --(condition)
Laten we ook kort het belangrijkste verschil tussen de WHERE- en HAVING-clausules begrijpen en wanneer deze te gebruiken:
- De
WHERE-clausule wordt gebruikt voor data-aggregatie, terwijl deHAVING-clausule wordt gebruikt na data-aggregatie; - De
WHERE-clausule wordt voorGROUP BYgeschreven, terwijl deHAVING-clausule naGROUP BYwordt geschreven.
Dit zijn de twee belangrijkste verschillen die onthouden moeten worden voor het succesvol toepassen van de HAVING-clausule. Laten we nu terugkeren naar de opdracht die door de school is gegeven.
Swipe to start coding
Sommige studenten komen meerdere keren voor in de cijferregistraties, wat duidt op dubbele of onverwachte vermeldingen in het systeem.
Je moet de achternamen ophalen van alle studenten van wie de registratie meer dan één cijfervermelding bevat. Het resultaat zal door de schooladministratie worden gebruikt om de gegevens te controleren en indien nodig te corrigeren.
Geef alleen de lijst met achternamen die aan deze voorwaarde voldoen, alfabetisch gesorteerd.
Korte instructies
- Haal de kolom
student_surnameop. - Groepeer de gegevens op
student_surname. - Gebruik de
HAVING-clausule om de resultaten te filteren op basis vanCOUNT(grade) > 1. - Sorteer de resultaten op
student_surname.
Oplossing
Bedankt voor je feedback!
single
Vraag AI
Vraag AI
Vraag wat u wilt of probeer een van de voorgestelde vragen om onze chat te starten.
Can you show me how to use the HAVING clause to find students with multiple grade entries?
Can you explain why the HAVING clause works in this scenario but WHERE does not?
Can you provide an example query for the school task using HAVING?
Geweldig!
Completion tarief verbeterd naar 4
HAVING-Clausule
Veeg om het menu te tonen
Het informatiesysteem van de school wordt herzien om gegevensconsistentie en nauwkeurigheid te waarborgen. Als onderdeel van deze herziening is een nieuwe data-analysetaak toegewezen.
Tijdens routinematige controles werd ontdekt dat sommige leerlingendossiers meer dan één cijfervermelding bevatten, terwijl het systeem is ontworpen om slechts één cijfer per leerling op te slaan.
De opdracht is om dergelijke gevallen te identificeren voor verder intern onderzoek.
Laten we samen nadenken over hoe we dit kunnen aanpakken. Je zou kunnen beginnen met de overweging dat we dit met een WHERE-clausule kunnen doen, en het zou er ongeveer zo uitzien:
123SELECT student_surname FROM student_grades WHERE COUNT(grade) > 1
Maar, zoals je ziet, krijgen we een foutmelding die aangeeft dat we geen aggregatiefuncties kunnen gebruiken binnen een WHERE-clausule. Hiervoor hebben we de HAVING-clausule nodig.
Stel dat we de afdelingen willen ophalen waar het gemiddelde salaris van werknemers lager is dan $70.000 per jaar.
Om dit te bereiken, moeten we een aggregatiefunctie en de HAVING-clausule gebruiken:
1234SELECT department FROM employees GROUP BY department HAVING AVG(salary) < 70000
We ontvingen één afdeling als resultaat met behulp van de HAVING-clausule, waarbij we een voorwaarde instelden voor de kolom waarop we de gegevens groepeerden.
Om gegevensaggregatie te gebruiken binnen de HAVING-clausule, moet er gegevensgroepering in onze query zijn. Zoals in de bovenstaande query groepeerden we de gegevens op de kolom department.
Bekijk de meer algemene syntaxis van de HAVING-clausule en wanneer deze het beste kan worden gebruikt:
SELECT column1, column2 --(optional)
FROM table
GROUP BY column1
HAVING AGG(column_n) --(condition)
Laten we ook kort het belangrijkste verschil tussen de WHERE- en HAVING-clausules begrijpen en wanneer deze te gebruiken:
- De
WHERE-clausule wordt gebruikt voor data-aggregatie, terwijl deHAVING-clausule wordt gebruikt na data-aggregatie; - De
WHERE-clausule wordt voorGROUP BYgeschreven, terwijl deHAVING-clausule naGROUP BYwordt geschreven.
Dit zijn de twee belangrijkste verschillen die onthouden moeten worden voor het succesvol toepassen van de HAVING-clausule. Laten we nu terugkeren naar de opdracht die door de school is gegeven.
Swipe to start coding
Sommige studenten komen meerdere keren voor in de cijferregistraties, wat duidt op dubbele of onverwachte vermeldingen in het systeem.
Je moet de achternamen ophalen van alle studenten van wie de registratie meer dan één cijfervermelding bevat. Het resultaat zal door de schooladministratie worden gebruikt om de gegevens te controleren en indien nodig te corrigeren.
Geef alleen de lijst met achternamen die aan deze voorwaarde voldoen, alfabetisch gesorteerd.
Korte instructies
- Haal de kolom
student_surnameop. - Groepeer de gegevens op
student_surname. - Gebruik de
HAVING-clausule om de resultaten te filteren op basis vanCOUNT(grade) > 1. - Sorteer de resultaten op
student_surname.
Oplossing
Bedankt voor je feedback!
single