Easy
Given the following 'employees' table:
| employee_id | name | salary | department |
|-------------|---------|--------|------------|
| 1 | Alice | 3000 | HR |
| 2 | Bob | 3500 | IT |
| 3 | Charlie | 4000 | IT |
Which SQL query retrieves employees with a salary higher than the average salary?
Author: Vincent CotroStatus: PublishedQuestion passed 1647 times
Edit
5
Community Evaluations
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.
Similar QuestionsMore questions about SQL