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

bookClause Having

L’école vous remercie vivement pour votre travail, et une nouvelle tâche nous attend.

Il s’avère que certains élèves ont passé des examens supplémentaires alors qu’ils n’auraient dû en passer qu’un seul. L’école les soupçonne de tricherie, car chaque élève ne devrait avoir qu’une seule note.

Notre mission est d’obtenir les noms de famille de ces élèves et de les transmettre à l’administration scolaire afin qu’elle prenne les mesures qu’elle jugera appropriées.

Réfléchissons ensemble à comment procéder. On pourrait commencer par envisager l’utilisation d’une clause WHERE, ce qui donnerait quelque chose comme 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 grâce à la clause HAVING, où nous avons défini une condition pour la colonne selon laquelle nous avons groupé les données.

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 où il est préférable de l’utiliser :

SELECT column1, column2... --(optional)
FROM table
GROUP BY column1
HAVING AGG(column_n) --(condition)

Comprenons é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 principales différences à retenir pour utiliser efficacement la clause HAVING. Revenons maintenant à la tâche qui nous a été confiée par l’école.

Tâche

Swipe to start coding

Votre tâche consiste à récupérer les noms de famille des étudiants qui possèdent plusieurs notes pour l'école.

Vous devez uniquement extraire les noms de famille des étudiants ; il n'est pas nécessaire d'inclure le nombre de leurs notes dans la réponse. Utilisez la clause HAVING et la fonction d'agrégation COUNT() pour accomplir cette tâche. Ensuite, triez les noms de famille par ordre alphabétique.

Remarque :

Le résultat doit comporter une seule colonne avec les noms de famille.

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

Awesome!

Completion rate improved to 4

bookClause Having

Glissez pour afficher le menu

L’école vous remercie vivement pour votre travail, et une nouvelle tâche nous attend.

Il s’avère que certains élèves ont passé des examens supplémentaires alors qu’ils n’auraient dû en passer qu’un seul. L’école les soupçonne de tricherie, car chaque élève ne devrait avoir qu’une seule note.

Notre mission est d’obtenir les noms de famille de ces élèves et de les transmettre à l’administration scolaire afin qu’elle prenne les mesures qu’elle jugera appropriées.

Réfléchissons ensemble à comment procéder. On pourrait commencer par envisager l’utilisation d’une clause WHERE, ce qui donnerait quelque chose comme 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 grâce à la clause HAVING, où nous avons défini une condition pour la colonne selon laquelle nous avons groupé les données.

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 où il est préférable de l’utiliser :

SELECT column1, column2... --(optional)
FROM table
GROUP BY column1
HAVING AGG(column_n) --(condition)

Comprenons é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 principales différences à retenir pour utiliser efficacement la clause HAVING. Revenons maintenant à la tâche qui nous a été confiée par l’école.

Tâche

Swipe to start coding

Votre tâche consiste à récupérer les noms de famille des étudiants qui possèdent plusieurs notes pour l'école.

Vous devez uniquement extraire les noms de famille des étudiants ; il n'est pas nécessaire d'inclure le nombre de leurs notes dans la réponse. Utilisez la clause HAVING et la fonction d'agrégation COUNT() pour accomplir cette tâche. Ensuite, triez les noms de famille par ordre alphabétique.

Remarque :

Le résultat doit comporter une seule colonne avec les noms de famille.

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 !

close

Awesome!

Completion rate improved to 4
Section 1. Chapitre 6
single

single

some-alt