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 1670 fois
Modifier
5
Évaluations de la communauté
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.
Questions similairesPlus de questions sur SQL
28
Écrire une requête SQL pour récupérer la liste des employés avec un salaire supérieur à 5100.14
Modifier une colonne dans une table SQL13
Sélectionner uniquement les valeurs distinctes d'une colonne en SQL12
Quel mot-clé SQL est utilisé pour trier le résultat d'une instruction SELECT?11
Écrire une requête SQL pour insérer des données dans une table