Clausola Having
Il sistema informativo scolastico è in fase di revisione per garantire la coerenza e l'accuratezza dei dati. Come parte di questa revisione, è stato assegnato un nuovo compito di analisi dei dati.
Durante i controlli di routine, è stato scoperto che alcuni record degli studenti contengono più di una voce di voto, anche se il sistema è progettato per memorizzare un solo voto per studente.
Il tuo compito è aiutare a identificare tali casi per ulteriori verifiche interne.
Riflettiamo insieme su come possiamo fare questo. Potresti iniziare considerando che possiamo farlo utilizzando una clausola WHERE, e potrebbe apparire in questo modo:
123SELECT student_surname FROM student_grades WHERE COUNT(grade) > 1
Ma, come puoi vedere, viene restituito un errore che indica che non è possibile utilizzare funzioni di aggregazione all'interno di una clausola WHERE. In questo caso, è necessario utilizzare la clausola HAVING.
Supponiamo di dover recuperare i reparti in cui lo stipendio medio dei dipendenti è inferiore a $70.000 all'anno.
Per ottenere questo risultato, è necessario utilizzare una funzione di aggregazione e la clausola HAVING:
1234SELECT department FROM employees GROUP BY department HAVING AVG(salary) < 70000
Abbiamo ottenuto un solo dipartimento in risposta utilizzando la clausola HAVING, dove abbiamo impostato una condizione per la colonna in base alla quale abbiamo raggruppato i dati.
Per utilizzare l'aggregazione dei dati all'interno della clausola HAVING, è necessario che ci sia un raggruppamento dei dati nella query. Come nella query sopra, abbiamo raggruppato i dati per la colonna department.
Vediamo la sintassi più generalizzata della clausola HAVING e quando è più opportuno utilizzarla:
SELECT column1, column2 --(optional)
FROM table
GROUP BY column1
HAVING AGG(column_n) --(condition)
Comprendere brevemente anche la differenza principale tra le clausole WHERE e HAVING e quando utilizzare ciascuna di esse:
- La clausola
WHEREviene utilizzata prima dell'aggregazione dei dati, mentre la clausolaHAVINGviene utilizzata dopo l'aggregazione dei dati; - La clausola
WHEREviene scritta prima diGROUP BY, mentre la clausolaHAVINGviene scritta dopoGROUP BY.
Queste sono le due differenze principali da ricordare per un utilizzo corretto della clausola HAVING. Ora, torniamo all'esercizio proposto dalla scuola.
Swipe to start coding
Alcuni studenti compaiono più volte nei registri dei voti, il che indica la presenza di voci duplicate o inattese nel sistema.
È necessario recuperare i cognomi di tutti gli studenti i cui registri contengono più di una voce di voto. Il risultato sarà utilizzato dall'amministrazione scolastica per esaminare e correggere i dati se necessario.
Restituire solo l'elenco dei cognomi che soddisfano questa condizione, ordinati alfabeticamente.
Istruzioni sintetiche
- Recuperare la colonna
student_surname. - Raggruppare i dati per
student_surname. - Utilizzare la clausola
HAVINGper filtrare i risultati in base aCOUNT(grade) > 1. - Ordinare i risultati per
student_surname.
Soluzione
Grazie per i tuoi commenti!
single
Chieda ad AI
Chieda ad AI
Chieda pure quello che desidera o provi una delle domande suggerite per iniziare la nostra conversazione
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?
Fantastico!
Completion tasso migliorato a 4
Clausola Having
Scorri per mostrare il menu
Il sistema informativo scolastico è in fase di revisione per garantire la coerenza e l'accuratezza dei dati. Come parte di questa revisione, è stato assegnato un nuovo compito di analisi dei dati.
Durante i controlli di routine, è stato scoperto che alcuni record degli studenti contengono più di una voce di voto, anche se il sistema è progettato per memorizzare un solo voto per studente.
Il tuo compito è aiutare a identificare tali casi per ulteriori verifiche interne.
Riflettiamo insieme su come possiamo fare questo. Potresti iniziare considerando che possiamo farlo utilizzando una clausola WHERE, e potrebbe apparire in questo modo:
123SELECT student_surname FROM student_grades WHERE COUNT(grade) > 1
Ma, come puoi vedere, viene restituito un errore che indica che non è possibile utilizzare funzioni di aggregazione all'interno di una clausola WHERE. In questo caso, è necessario utilizzare la clausola HAVING.
Supponiamo di dover recuperare i reparti in cui lo stipendio medio dei dipendenti è inferiore a $70.000 all'anno.
Per ottenere questo risultato, è necessario utilizzare una funzione di aggregazione e la clausola HAVING:
1234SELECT department FROM employees GROUP BY department HAVING AVG(salary) < 70000
Abbiamo ottenuto un solo dipartimento in risposta utilizzando la clausola HAVING, dove abbiamo impostato una condizione per la colonna in base alla quale abbiamo raggruppato i dati.
Per utilizzare l'aggregazione dei dati all'interno della clausola HAVING, è necessario che ci sia un raggruppamento dei dati nella query. Come nella query sopra, abbiamo raggruppato i dati per la colonna department.
Vediamo la sintassi più generalizzata della clausola HAVING e quando è più opportuno utilizzarla:
SELECT column1, column2 --(optional)
FROM table
GROUP BY column1
HAVING AGG(column_n) --(condition)
Comprendere brevemente anche la differenza principale tra le clausole WHERE e HAVING e quando utilizzare ciascuna di esse:
- La clausola
WHEREviene utilizzata prima dell'aggregazione dei dati, mentre la clausolaHAVINGviene utilizzata dopo l'aggregazione dei dati; - La clausola
WHEREviene scritta prima diGROUP BY, mentre la clausolaHAVINGviene scritta dopoGROUP BY.
Queste sono le due differenze principali da ricordare per un utilizzo corretto della clausola HAVING. Ora, torniamo all'esercizio proposto dalla scuola.
Swipe to start coding
Alcuni studenti compaiono più volte nei registri dei voti, il che indica la presenza di voci duplicate o inattese nel sistema.
È necessario recuperare i cognomi di tutti gli studenti i cui registri contengono più di una voce di voto. Il risultato sarà utilizzato dall'amministrazione scolastica per esaminare e correggere i dati se necessario.
Restituire solo l'elenco dei cognomi che soddisfano questa condizione, ordinati alfabeticamente.
Istruzioni sintetiche
- Recuperare la colonna
student_surname. - Raggruppare i dati per
student_surname. - Utilizzare la clausola
HAVINGper filtrare i risultati in base aCOUNT(grade) > 1. - Ordinare i risultati per
student_surname.
Soluzione
Grazie per i tuoi commenti!
single