查询中有2个不同的聚合,无法弄清楚

时间:2014-11-18 11:57:00

标签: sql oracle11g

所以我有这个问题:

SELECT department_id, AVG(salary)
FROM   employees
GROUP BY department_id
HAVING MAX(salary) > 10000;

但是输出让我感到困惑,因为我只是不明白为什么它显示低于10000的值,即使我在过滤条款中指定为> 10000

              8601,333333333333333333333333333333333333
              4150
              19333,3333333333333333333333333333333333
              9500
              10154
              8955,882352941176470588235294117647058824

我预计只会输出10154和19333,3333333333333333333333333333333333。非常感谢

2 个答案:

答案 0 :(得分:2)

您正在显示工资的平均值,其中部门中的 max()大于10000.因此,只有一个工资需要大于10000才能显示部门。

也许你的意思是:

SELECT department_id, MAX(salary)
FROM employees
GROUP BY department_id
HAVING MAX(salary) > 10000;

答案 1 :(得分:1)

请尝试按照sql -

SELECT department_id, AVG(salary)
FROM employees
GROUP BY department_id
HAVING AVG(salary) > 10000;

SELECT department_id, MAX(salary)
FROM employees
GROUP BY department_id
HAVING MAX(salary) > 10000;

运行你想要的......