平均值的最大值

Bil*_*tes 4 sql oracle oracle10g ora-00937

我应该获得每个部门的平均工资,并且只显示平均工资最高的部门。我想出了这个查询,但它不起作用。有人知道吗?

SELECT department, max(avg(wage))
FROM employees
GROUP BY department;
Run Code Online (Sandbox Code Playgroud)

我收到此错误:第1行出现错误:ORA-00937:不是单组组函数

Tho*_*mas 5

没有CTE,您可以执行以下操作:

Select Z.Department, Z.AvgWage
From  (
        Select Department, Avg(Wage) AvgWage
        From Employees
        Group By Department
        ) As Z
Where AvgWage = (
                Select Max(Z1.AvgWage)
                From    (
                        Select Department, Avg(Wage) AvgWage
                        From Employees
                        Group By Department
                        )  Z1
                )
Run Code Online (Sandbox Code Playgroud)

使用CTE,您可以:

With AvgWages As
    (
    Select Department
        , Avg(Wage) AvgWage
        , Rank() Over( Order By Avg(Wage) Desc ) WageRank
    From Employees
    Group By Department
    )
Select Department, AvgWage, WageRank
From AvgWages
Where WageRank = 1
Run Code Online (Sandbox Code Playgroud)


bry*_*yan 0

通过谷歌搜索...

原因:SELECT 列表不能同时包含组函数(例如 AVG、COUNT、MAX、MIN、SUM、STDDEV 或 VARIANCE)和单个列表达式,除非单个列表达式包含在 GROUP BY 子句中。

操作:从 SELECT 列表中删除组函数或单个列表达式,或者添加包含列出的所有单个列表达式的 GROUP BY 子句。