Clause Having
Le système d'information scolaire est en cours de révision afin d'assurer la cohérence et l'exactitude des données. Dans le cadre de cette révision, une nouvelle tâche d'analyse de données a été attribuée.
Lors des vérifications de routine, il a été découvert que certains dossiers d'élèves contiennent plus d'une note, alors que le système est conçu pour enregistrer une seule note par élève.
Votre tâche consiste à aider à identifier ces cas pour un examen interne ultérieur.
Réfléchissons ensemble à comment nous pouvons procéder. Vous pourriez commencer par envisager que cela peut être réalisé à l'aide d'une clause WHERE, ce qui ressemblerait à ceci :
123SELECT student_surname FROM student_grades WHERE COUNT(grade) > 1
Mais, comme vous pouvez le constater, nous obtenons une erreur indiquant que nous ne pouvons pas utiliser de fonctions d'agrégation dans une clause WHERE. C'est ici que la clause HAVING devient nécessaire.
Supposons que nous devions récupérer les départements où le salaire moyen des employés est inférieur à 70 000 $ par an.
Pour cela, il est nécessaire d'utiliser une fonction d'agrégation ainsi que la clause HAVING :
1234SELECT department FROM employees GROUP BY department HAVING AVG(salary) < 70000
Nous avons obtenu un seul département en réponse en utilisant la clause HAVING, où nous avons défini une condition pour la colonne selon laquelle nous avons groupé les données.
Pour utiliser l'agrégation de données dans la clause HAVING, il est nécessaire d'effectuer un regroupement des données dans la requête. Comme dans la requête ci-dessus, nous avons groupé les données par la colonne department.
Examinons la syntaxe plus générale de la clause HAVING et les situations dans lesquelles il est préférable de l'utiliser :
SELECT column1, column2 --(optional)
FROM table
GROUP BY column1
HAVING AGG(column_n) --(condition)
Comprendre également brièvement la différence principale entre les clauses WHERE et HAVING ainsi que le moment d'utiliser chacune d'elles :
- La clause
WHEREest utilisée avant l'agrégation des données, tandis que la clauseHAVINGest utilisée après l'agrégation des données ; - La clause
WHEREs'écrit avantGROUP BY, tandis que la clauseHAVINGs'écrit aprèsGROUP BY.
Ce sont les deux différences principales à retenir pour une utilisation efficace de la clause HAVING. Revenons maintenant à la tâche qui nous a été confiée par l'école.
Swipe to start coding
Certains étudiants apparaissent plusieurs fois dans les relevés de notes, ce qui indique des doublons ou des entrées inattendues dans le système.
Vous devez extraire les noms de famille de tous les étudiants dont les relevés contiennent plus d'une note. Le résultat sera utilisé par l'administration scolaire pour examiner et corriger les données si nécessaire.
Retournez uniquement la liste des noms de famille répondant à cette condition, triée par ordre alphabétique.
Instructions brèves
- Extraire la colonne
student_surname. - Regrouper les données par
student_surname. - Utiliser la clause
HAVINGpour filtrer les résultats selonCOUNT(grade) > 1. - Trier les résultats par
student_surname.
Solution
Merci pour vos commentaires !
single
Demandez à l'IA
Demandez à l'IA
Posez n'importe quelle question ou essayez l'une des questions suggérées pour commencer notre discussion
Génial!
Completion taux amélioré à 4
Clause Having
Glissez pour afficher le menu
Le système d'information scolaire est en cours de révision afin d'assurer la cohérence et l'exactitude des données. Dans le cadre de cette révision, une nouvelle tâche d'analyse de données a été attribuée.
Lors des vérifications de routine, il a été découvert que certains dossiers d'élèves contiennent plus d'une note, alors que le système est conçu pour enregistrer une seule note par élève.
Votre tâche consiste à aider à identifier ces cas pour un examen interne ultérieur.
Réfléchissons ensemble à comment nous pouvons procéder. Vous pourriez commencer par envisager que cela peut être réalisé à l'aide d'une clause WHERE, ce qui ressemblerait à ceci :
123SELECT student_surname FROM student_grades WHERE COUNT(grade) > 1
Mais, comme vous pouvez le constater, nous obtenons une erreur indiquant que nous ne pouvons pas utiliser de fonctions d'agrégation dans une clause WHERE. C'est ici que la clause HAVING devient nécessaire.
Supposons que nous devions récupérer les départements où le salaire moyen des employés est inférieur à 70 000 $ par an.
Pour cela, il est nécessaire d'utiliser une fonction d'agrégation ainsi que la clause HAVING :
1234SELECT department FROM employees GROUP BY department HAVING AVG(salary) < 70000
Nous avons obtenu un seul département en réponse en utilisant la clause HAVING, où nous avons défini une condition pour la colonne selon laquelle nous avons groupé les données.
Pour utiliser l'agrégation de données dans la clause HAVING, il est nécessaire d'effectuer un regroupement des données dans la requête. Comme dans la requête ci-dessus, nous avons groupé les données par la colonne department.
Examinons la syntaxe plus générale de la clause HAVING et les situations dans lesquelles il est préférable de l'utiliser :
SELECT column1, column2 --(optional)
FROM table
GROUP BY column1
HAVING AGG(column_n) --(condition)
Comprendre également brièvement la différence principale entre les clauses WHERE et HAVING ainsi que le moment d'utiliser chacune d'elles :
- La clause
WHEREest utilisée avant l'agrégation des données, tandis que la clauseHAVINGest utilisée après l'agrégation des données ; - La clause
WHEREs'écrit avantGROUP BY, tandis que la clauseHAVINGs'écrit aprèsGROUP BY.
Ce sont les deux différences principales à retenir pour une utilisation efficace de la clause HAVING. Revenons maintenant à la tâche qui nous a été confiée par l'école.
Swipe to start coding
Certains étudiants apparaissent plusieurs fois dans les relevés de notes, ce qui indique des doublons ou des entrées inattendues dans le système.
Vous devez extraire les noms de famille de tous les étudiants dont les relevés contiennent plus d'une note. Le résultat sera utilisé par l'administration scolaire pour examiner et corriger les données si nécessaire.
Retournez uniquement la liste des noms de famille répondant à cette condition, triée par ordre alphabétique.
Instructions brèves
- Extraire la colonne
student_surname. - Regrouper les données par
student_surname. - Utiliser la clause
HAVINGpour filtrer les résultats selonCOUNT(grade) > 1. - Trier les résultats par
student_surname.
Solution
Merci pour vos commentaires !
single