Question du test SQL - Les bases

Écrire une requête SQL pour récupérer les employés avec un salaire supérieur à la moyenne.

Facile

Étant donné la table 'employees' suivante :

| employee_id | name    | salary | department |
|-------------|---------|--------|------------|
| 1           | Alice   | 3000   | HR         |
| 2           | Bob     | 3500   | IT         |
| 3           | Charlie | 4000   | IT         |

Quelle requête SQL permet de récupérer les employés ayant un salaire supérieur à la moyenne des salaires ?

Auteur: Vincent CotroStatut : PubliéeQuestion passée 1492 fois
Modifier
5
Évaluations de la communauté
developer avatar
Hind
28/08/2024
Mauvaise Utilisation de AVG(salary) avec WHERE : La fonction d'agrégation AVG(salary) calcule la moyenne de tous les salaires dans la table. Dans une requête SQL, les fonctions d'agrégation comme AVG(), SUM(), COUNT(), etc., sont utilisées pour calculer des valeurs sur un groupe de lignes. Ces fonctions ne peuvent pas être directement utilisées dans une clause WHERE car WHERE filtre les lignes avant que l'agrégation ne soit effectuée. WHERE s'applique aux lignes individuelles avant toute agrégation, donc AVG(salary) n'est pas défini dans le contexte d'un WHERE car il n'est pas une valeur de colonne existante, mais une valeur calculée sur un groupe de lignes. Comment SQL Traite les Clauses : SQL traite d'abord la clause FROM, puis la clause WHERE, et ensuite les fonctions d'agrégation (AVG, SUM, etc.) sont calculées après cela, généralement dans une clause SELECT ou HAVING. Donc, dans la clause WHERE, la requête SQL s'attend à une condition basée sur des valeurs de colonnes disponibles dans les lignes sélectionnées, mais AVG(salary) n'est pas encore calculée à ce stade.