如何在不使用联接的情况下使用max函数的情况下显示每个部门的最高薪水

时间:2018-11-27 10:57:38

标签: mysql sql group-by max

我有两个表:

  • 员工,列:字段emp_id。 emp_name,部门编号,工资。
  • 部门,列: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 :(得分:1)

调用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背后的基本思想是,我们希望为每个部门的每个员工分配一个单独的级别。关于您的两个表,我们将员工加入部门,以为每位员工带来部门信息。