Посчитайте средний выпуск sql - PullRequest
0 голосов
/ 09 мая 2020

У меня есть таблица с рабочими и их зарплатой. Я пытаюсь подсчитать, сколько сотрудников имеют зарплату выше средней. Я знаю, как показать среднюю зарплату, я знаю, как посчитать, сколько сотрудников работает в компании, но я не смог ответить на вопрос. Это то, что я пробовал, но получаю сообщение об ошибке:

SELECT COUNT(workers_id) FROM flight_company.workers
WHERE Salary > AVG(Salary);

Ответы [ 4 ]

0 голосов
/ 09 мая 2020

Этот сработал для меня

SELECT COUNT(workers_id) as Num_Above_Average FROM flight_company.workersWHERE Salary > (select avg(salary) from flight_company.workers)

как мне добавить к этому столбец средней зарплаты?

спасибо

0 голосов
/ 09 мая 2020

Вы можете использовать подзапрос:

select count(w.workers_id))
from flight_company.workers w
where salary > (select avg(salary) from flight_company.workers);
0 голосов
/ 09 мая 2020

Вы можете сделать это с помощью оконной функции avg() (MySql 8.0+) и агрегирования:

select sum(t.flag)
from (select salary > avg(salary) over () flag from workers) t
0 голосов
/ 09 мая 2020

Если вы используете 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
...