我有一个工人和他们的工资表.我试图计算有多少工人的工资大于平均水平我知道如何显示平均水平,我知道如何计算公司有多少工人,但我未能回答这个问题。这是我尝试的,但我得到一个错误。
SELECT COUNT(workers_id) FROM flight_company.workers
WHERE Salary > AVG(Salary);
如果你运行的是MySQL 8.0,使用窗口函数。
select avg_salary, count(*) no_workers_above_average
from (select salary, avg(salary) over() avg_salary from flight_company.workers) t
where salary > avg_salary
group by avg_salary
在早期的版本中,一个选项是一个连接与一个聚合查询。
select a.avg_salary, count(*) no_workers_above_average
from flight_company.workers w
inner join (select avg(salary) avg_salary from flight_company.workers) a
where w.salary > a.avg_salary
group by a.avg_salary
你可以使用subquery 。
select count(w.workers_id))
from flight_company.workers w
where salary > (select avg(salary) from flight_company.workers);
你可以用窗口函数来做 avg()
(MySql 8.0以上)和聚合。
select sum(t.flag)
from (select salary > avg(salary) over () flag from workers) t
这个对我很有用
SELECT COUNT(workers_id) as Num_Above_Average FROM flight_company.workersWHERE Salary > (select avg(salary) from flight_company.workers)
我如何添加平均工资栏目到这个?
谢谢