可以使用HAVING子句将表列与聚合函数的结果进行比较吗?

时间:2018-09-16 12:34:10

标签: mysql sql

虽然我知道我可以清楚地使用嵌套的SQL查询来获取薪水大于平均员工薪水的员工数量,但带有 HAVING 子句的查询却不能。有什么我想念的东西吗?

mysql> select count(*) from employee 
       where salary > (select avg(salary) from employee) ;

+----------+
| count(*) |
+----------+
|        4 |
+----------+
1 row in set (0.00 sec)

`

这不起作用。

    mysql> select count(*) from employee group by salary having salary > avg(salary);
  

空集(0.00秒)

2 个答案:

答案 0 :(得分:0)

如果您打算使用聚合函数,则可以尝试一下。否则,第一个查询就可以了。

SELECT count(*) Count
FROM (
  SELECT
    salary,
    AVG(salary) OVER () AS AvgSalary
  FROM employee 
) s
WHERE salary> AvgSalary

答案 1 :(得分:0)

我认为对此的正确答案是:

SELECT fname , salary
FROM employee
GROUP BY salary
HAVING salary > (SELECT avg(salary) FROM employee);