Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Apprendre Clause Having | Regroupement
Practice
Projects
Quizzes & Challenges
Quizzes
Challenges
/
SQL Intermédiaire

bookClause 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 :

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

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 :

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

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.

Note
Remarque

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 :

  1. La clause WHERE est utilisée avant l'agrégation des données, tandis que la clause HAVING est utilisée après l'agrégation des données ;
  2. La clause WHERE s'écrit avant GROUP BY, tandis que la clause HAVING s'écrit après GROUP 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.

Tâche

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 HAVING pour filtrer les résultats selon COUNT(grade) > 1.
  • Trier les résultats par student_surname.

Solution

Tout était clair ?

Comment pouvons-nous l'améliorer ?

Merci pour vos commentaires !

Section 1. Chapitre 6
single

single

Demandez à l'IA

expand

Demandez à l'IA

ChatGPT

Posez n'importe quelle question ou essayez l'une des questions suggérées pour commencer notre discussion

close

bookClause 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 :

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

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 :

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

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.

Note
Remarque

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 :

  1. La clause WHERE est utilisée avant l'agrégation des données, tandis que la clause HAVING est utilisée après l'agrégation des données ;
  2. La clause WHERE s'écrit avant GROUP BY, tandis que la clause HAVING s'écrit après GROUP 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.

Tâche

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 HAVING pour filtrer les résultats selon COUNT(grade) > 1.
  • Trier les résultats par student_surname.

Solution

Switch to desktopPassez à un bureau pour une pratique réelleContinuez d'où vous êtes en utilisant l'une des options ci-dessous
Tout était clair ?

Comment pouvons-nous l'améliorer ?

Merci pour vos commentaires !

Section 1. Chapitre 6
single

single

some-alt