single
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.
Jouw taak is om dergelijke gevallen te identificeren voor verder intern onderzoek.
Denk na over hoe je dit kunt doen. Je zou kunnen beginnen met het overwegen dat je dit kunt doen met een WHERE-clausule, en het zou er ongeveer zo uitzien:
123SELECT student_surname FROM student_grades WHERE COUNT(grade) > 1
Maar, zoals je kunt zien, krijgen we een foutmelding die aangeeft dat je geen aggregatiefuncties kunt gebruiken binnen een WHERE-clausule. Hiervoor heb je de HAVING-clausule nodig.
Stel dat je de afdelingen wilt 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
Het resultaat is één afdeling als antwoord met behulp van de HAVING-clausule, waarbij een voorwaarde wordt ingesteld voor de kolom die wordt gebruikt voor groepering.
Om gegevensaggregatie te gebruiken binnen de HAVING-clausule, moet er gegevensgroepering in onze query zijn. Zoals in de bovenstaande query hebben we de gegevens gegroepeerd op de kolom department.
Hier volgt een 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)
-- This will cause an error
Hier volgt een kort overzicht van het belangrijkste verschil tussen de WHERE- en HAVING-clausules en wanneer je welke gebruikt:
- 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 je moet onthouden voor het succesvol gebruiken van de HAVING-clausule. Ga nu terug naar de opdracht die we van de school hebben gekregen.
Veeg om te beginnen met coderen
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 gegevens meer dan één cijfervermelding bevatten. 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.