如何在不使用max函数的情况下显示每个部门的最高工资

sycxhyv7  于 2021-06-17  发布在  Mysql
关注(0)|答案(1)|浏览(302)

我有两张table:
employee,列:fiels emp\u id。emp\u name,department\u id,salary。
部门,列:部门id和部门名称。
我必须显示每个部门的最高工资,而不使用连接的max函数。

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

我试着分组,但没有得到答案。
我是sql查询的初学者

iszxjhcz

iszxjhcz1#

你需要一个分区来调用 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 关于部门,我们希望为每个部门的每个员工分配一个单独的职级。关于您的两个表,我们将员工加入到部门,为每个员工引入部门信息。

相关问题