嵌套聚合函数,Max(Avg()),在SQL中

Ala*_*Aga 6 sql

我在SQL中编写此查询:

select MAX(AVG(salary) ) from employees group by department_id;
Run Code Online (Sandbox Code Playgroud)

首先,我会得到小组department_id,但接下来会发生什么?

Nik*_*tev 12

如果你有类似的东西

EmployeeId DepartmentId Salary
    1          1         10              
    2          1         30
    3          2         30
    4          2         40
    5          2         20
    6          3         40
    7          3         50
Run Code Online (Sandbox Code Playgroud)

分组后

DepartmentId    AVG(Salary) 
    1             (10+30)/2 = 20
    2             (30+40+20)/3 = 30
    3             (40+50)/2= 45
Run Code Online (Sandbox Code Playgroud)

因此,下面的查询将返回45作为departmentId 3的最大平均工资

SELECT MAX(x.avg) 
FROM ( SELECT AVG(salary)as avg FROM employees group by department_id)x;
Run Code Online (Sandbox Code Playgroud)


Bra*_*rad 5

最有可能的是,取决于您的 RDBMS,这将需要通过子查询完成

select max(AveragesByDept.avgSalary) 
from ( 
    select avgSalary=avg(salary) 
    from employees
    group by department_id
    ) AveragesByDept
Run Code Online (Sandbox Code Playgroud)