Вывести максимальную зарплату в каждом городе

Есть запрос в котором нужно вывести максимальную зарплату в каждом городе, причем сотрудники и города находятся в разных таблицах.

Собственно сами таблицы:

Таблица с сотрудниками

Таблица с городами

У меня были попытки написать запрос но в запросе чего то не хватает, не могу понять чего.

select ename,deptno, sal 
from (
    select ename, deptno, sal, rank() over(partition by deptno order by sal desc) n_rank 
    from emp natural join (select distinct loc, deptno from dept)) 
where n_rank = 1;

А проблема в том что не могу вместо deptno вывести название города.


Ответы (2 шт):

Автор решения: TaniKova

Если нужно просто вывести город и максимальную зарплату в нём, используйте обычную группировку:

 select LOC, max(SAL) as MAX_SALARY
 from emp 
 inner join dept on dept.DEPTNO = emp.DEPTNO
 group by LOC

Если нужно вывести данные по каждому сотруднику и в дополнение указать, какая максимальная зп в его городе, можно использовать такой вариант:

select 
  e.ename, 
  e.deptno,  
  e.sal, 
  d.loc, 
  max(e.sal) over(partition by loc) as max_salary
from emp e 
inner join dept d on   d.deptno = e.deptno;
→ Ссылка
Автор решения: 0xdb

Вот так пoлучить список всех сотрудников, получающих топовый заработок в своём городе:

select ename, city, salary 
from (
    select first_name||' '||last_name ename, l.city, salary,
        max (salary) keep (
            dense_rank first order by e.salary) over (partition by city) sitytopsal
    from hr.employees e
    join hr.departments d on d.department_id = e.department_id
    join hr.locations l on l.location_id = d.location_id
) where salary = sitytopsal order by salary desc
/

Результат:

ENAME            CITY                         SALARY
---------------- ------------------------ ----------
Hermann Baer     Munich                        10000
Susan Mavris     London                         6500
Sundita Kumar    Oxford                         6100
Pat Fay          Toronto                        6000
Diana Lorentz    Southlake                      4200
Karen Colmenares Seattle                        2500
TJ Olson         South San Francisco            2100

PS В примере использована стандартная схема примеров HR.

→ Ссылка