polyashovdima
@polyashovdima
Ведущий инженер IP сети

SQL — список начальников с превышением бюджета заработных плат по отделу, с суммой превышения?

https://habrahabr.ru/post/181033/
Есть две таблицы, с отделами и сотрудниками.
Необходимо Вывести:
список начальников с превышением бюджета заработных плат по отделу, с суммой превышения
  • Вопрос задан
  • 643 просмотра
Решения вопроса 1
@gill-sama
1. Выбираем суммы дохода по отделам
select sum(e.salary) as sum, d.id as d_id from employee e join department d on e.department_id = d.id group by d.id

2. Думается мне что начальника(chief_id) департамента, а так же бюджет(budget) надо хранить у департамента, если так, то джойним п.1 к департаменту и отсекаем лишние
select chief_id, t.sum-budget as overdraft from department d 
join
 (select sum(e.salary) as sum, d.id as d_id from employee e join department d on e.department_id = d.id group by d.id) t
 on t.d_id = d.id
where  t.sum>budget

Соотвественно получаем id начальника и разницу между суммой ЗП и Бюджетом отдела
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
polyashovdima
@polyashovdima Автор вопроса
Ведущий инженер IP сети
Верно?
select a.*
from   department a
where  a.budget = ( select max(budget) from department b
                    where  b.budget = a.budget )
Ответ написан
Комментировать
@JuniorNoobie
Сижу в поддержке, пишу мелкие проекты
SELECT id_chief, SUM(salary) - MaxSalaryToDepartments as diff
FROM employee
GROUP BY id_chief
HAVING SUM(salary) > MaxSalaryToDepartments
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы