Получение максимальной зарплаты для каждого сотрудника - PullRequest
0 голосов
/ 28 января 2019

Я пытаюсь получить максимальную зарплату для каждого сотрудника.

select e.first_name, e.last_name, t.title, s.salary
from employees e inner join titles t on e.emp_no = t.emp_no
inner join salaries s on e.emp_no = s.emp_no
where s.salary in (select max(salary) from salaries group by emp_no);

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

Кстати, я использую пример базы данных сотрудника отсюда.https://github.com/datacharmer/test_db

Ответы [ 2 ]

0 голосов
/ 28 января 2019

group by очень удобно для этой ситуации

select 
  e.first_name, 
  e.last_name, 
  t.title,  
  max(s.salary)
from employees e 
inner join titles t 
  on e.emp_no = t.emp_no
inner join salaries s 
  on e.emp_no = s.emp_no
group by 
  e.first_namme, 
  e.last_name, 
  t.title
0 голосов
/ 28 января 2019

Используйте ссылку из outer query, чтобы сделать это correlated подзапрос:

select e.first_name, e.last_name, t.title, s.salary
from employees e inner join 
     titles t 
     on e.emp_no = t.emp_no inner join 
     salaries s 
     on e.emp_no = s.emp_no
where s.salary = (select max(s1.salary) from salaries s1 where s1.emp_no = e.emp_no);
...