Disons que j'ai une table qui a E_name, DepartmentName, Salary

E_name  DepartmentName  Salary
AAA     D1              1000
BBB     D1              1400
CCC     D2              1320
DDD     D2              1100
EEE     D3              900
FFF     D3              1200

Comment afficher DepartmentName où le salaire moyen de ses employés est supérieur à la moyenne de tous les employés

sql
0
Omar Mohamed 20 nov. 2018 à 23:56

3 réponses

Meilleure réponse

Vous pouvez utiliser GROUP BY avec une clause HAVING

select DepartmentName  
  from employees
 group by DepartmentName
 having avg(Salary) > ( select avg(salary) from employees );
0
Barbaros Özhan 20 nov. 2018 à 21:17

Je me joindrais entre une requête agrégée regroupée par service et une requête agrégée qui n'est pas groupée:

SELECT DepartmentName, AvgDepartmentSalary
FROM   (SELECT   DepartmentName, AVG(Salary) AS AvgDepartmentSalary
        FROM     employees
        GROUP BY DepartmentName) g
JOIN   (SELECT AVG(Salary) AS AverageSalary
        FROM   employee) u ON AvgDepartmentSalary > AverageSalary
0
Mureinik 20 nov. 2018 à 21:18
 select dept_name,sal 
 group by dept_name 
 having sal > avg(sal);`

Voulez-vous dire cela? comme cela dit, tous les groupes de départements ayant un salaire> moy de tous les salaires de ce département donnent ce résultat.

0
Juan Carlos Oropeza 21 nov. 2018 à 16:05