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

hkmswyz6  于 2021-06-21  发布在  Mysql
关注(0)|答案(2)|浏览(251)

虽然我知道我可以清楚地使用嵌套的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秒)

5kgi1eie

5kgi1eie1#

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

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

mbskvtky2#

我想正确的答案是:

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

相关问题