我有两个表:
我必须显示每个部门的最高薪水,而不能使用通过联接的max函数。
select * from
(select salary, Dense_rank() over(order by salary desc) As Rank from
employee)
Where Rank =5;
我尝试了分组方式,但没有得到答案。
我是SQL查询的初学者
答案 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
背后的基本思想是,我们希望为每个部门的每个员工分配一个单独的级别。关于您的两个表,我们将员工加入部门,以为每位员工带来部门信息。