wrile sql query using group
Нужно получить e.name, e.salary c максимальной зарплатой для каждого департамента, используя в запросе команды 'group' и может быть 'having'
есть рабочий запрос, но как написать альтернативный запрос не знаю
select e.name, e.salary from employee e
where salary = (select max(salary) from employee e2
where e.department_id = e2.department_id)
Ответы (1 шт):
Автор решения: Дмитрий Бесшапошников
→ Ссылка
Я бы сделал так:
select
e.name
,e.salary
from employee e
where e.salary in
(select max(salary) as s
from employee e
group by e.department_id)
но если уж так надо приплести having, то можно построить что-то вроде этого, но зачем это нужно, я не понимаю
select
e.name
,e.salary
from employee e
join (
select
max(e.salary) as salary
, e.department_id
from employee e
group by e.department_id
having max(e.salary) in
(select max(salary) as s
from employee e
group by e.department_id)
) s
on s.salary = e.salary
тестировал тут: sqlfiddle.com
