Как отобразить максимальную зарплату в каждом отделе, не используя функцию max с помощью объединений - PullRequest
0 голосов
/ 27 ноября 2018

У меня есть две таблицы:

  • Сотрудник, столбцы: поля emp_id.emp_name, Department _id, salary.
  • Отдел, столбцы: dep_id и dep_name.

Мне необходимо отображать максимальную зарплату в каждом отделе без использования функции max с помощью объединений.

select * from 
(select salary, Dense_rank() over(order by salary desc) As Rank from 
employee)
Where Rank =5;

Я пробовал группировать, но не получил ответа.

Я новичок в SQL-запросах

1 Ответ

0 голосов
/ 27 ноября 2018

Вам нужен раздел в вашем звонке на DENSE_RANK:

SELECT dep_name, salary
FROM
(
    SELECT d.dep_name, e.salary,
        DENSE_RANK() OVER (PARTITION BY d.dep_id ORDER BY e.salary DESC) AS rnk
    FROM employee e
    INNER JOIN department d
        ON e.Department_id = d.dep_id
) t
WHERE rnk = 1;

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

...