Самая высокая зарплата на отдел (также такая же зарплата) - PullRequest
0 голосов
/ 23 января 2019

Как я могу выбрать самую высокую зарплату в каждом отделении с одинаковой зарплатой.

Мой запрос только для получения первой строки в каждом отделе с одинаковой зарплатой. Но я хочу выбрать максимальную зарплату для каждого отдела. Пожалуйста, помогите мне выйти из этой проблемы.

Ниже приведен пример таблицы:

PSD Department
----------------------
Yumang's Salary: $500
Paus Salary: $500

QA Department
----------------------
Villanueva: $1000 
Calacar: $1000 

Вот код, который я пытаюсь:

SELECT MAX(inter_department_votes.number_votes)
FROM employee_salary
GROUP BY dept_id

Ответы [ 3 ]

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

Использование функции RANK():

RANK предоставляет одинаковое числовое значение для связей (например, 1, 1, 2, 4, 5).

SELECT *
FROM (
      SELECT dept_id, 
             PersonName, 
             Salary,
             RANK() OVER(PARTITION dept_id ORDER BY Salary DESC) AS SortBySalary 
      FROM employee_salary
     )
WHERE SortBySalary = 1

Также см. этот ответ с использованием функции MAX().

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

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

при условии, что вы составляете две разные таблицы: одну для сотрудников и одну для отдела. это упростит запросы для будущей и эффективной базы данных. В этом случае:

+----------+------------+------+-----+
|EmployeeID|EmployeeName|Salary|DepNo|
+----------+------------+------+-----+
|                                    |
+----------+------------+------+-----+
+-----+-------+
|DepNo|DepName|
+-----+-------+
|             |
+-----+-------+


 SELECT DepName, EmployeeName, salary
 FROM Department d
 INNER JOIN Employee e on e.DepNo = d.DepNo 
 INNER JOIN 
 (
    SELECT DepNo, MAX(salary) sal
    FROM Employee
    GROUP BY DepNo
 ) ss ON e.DepNo = ss.DepNo
 AND e.salary = ss.sal;
0 голосов
/ 23 января 2019

попробуйте выбрать также dept_id:

SELECT dept_id, 
       MAX(inter_department_votes.number_votes) 
FROM employee_salary GROUP BY dept_id
...