/*
create table dep_avg as
select d.department_id,
department_name,
avg(salary) davg
from employees e join departments d on
d.department_id = e.department_id
group by
d.department_id,
department_name
*/
-- select * from dep_avg
select first_name, last_name, department_name, salary from employees e, departments d
where e.department_id = d.department_id and
salary > (select davg from dep_avg where department_id = d.department_id)
--and department_name = 'IT'
select first_name, last_name, department_name, salary from employees e, departments d
where e.department_id = d.department_id and
salary > (select avg(salary) from
-- employees ei join departments di on di.department_id = ei.department_id
employees ei, departments di
where
di.department_id = ei.department_id and
-- di.department_id = d.department_id
di.department_name = d.department_name
)
select first_name, last_name, department_name, salary,
round(davg), round(salary-davg) mehr from
employees e, dep_avg d where
e.department_id = d.department_id and
salary > davg
order by mehr desc
select first_name, last_name, department_name, salary,
round(davg), round(salary-davg) mehr from
employees e,
-- hier stellen wir uns das avg salary pro department zusammen
(select d.department_id,
department_name,
avg(salary) davg
from employees e join departments d on
d.department_id = e.department_id
group by
d.department_id,
department_name ) d
-- ende avg sal per dep
where
e.department_id = d.department_id and
salary > davg
order by mehr desc
==== Finde den Angestellten mit dem höchsten Gehalt pro Department ====
SELECT first_name, last_name, salary, dep_outer.DEPARTMENT_NAME, dep_outer.department_id
FROM EMPLOYEES join DEPARTMENTS dep_outer
on (dep_outer.DEPARTMENT_ID = EMPLOYEES.DEPARTMENT_ID)
where
salary = (select max(salary) from employees where department_id = dep_outer.department_id)
order by dep_outer.department_id, salary
==== den Angestellten mit der niedrigsten id und gleichem Nachnamen ====
select employee_id,
last_name
from employees e
where employee_id =
(select min(employee_id) from employees where last_name = e.last_name)
order by employee_id;