这是面试中问我的两个问题,但唯一的条件是使用等级/密集等级。
使用rank / dense_rank查找每个部门的第二高薪水 蜂巢。
- 每个部门都有足够的记录。
- 几个部门只有1条记录时。
请指导我是否有效。 如果是,那么对相同内容的查询应该是什么。
答案 0 :(得分:2)
如果您需要选择所有第二名薪水雇员,请使用
dense_rank() over(partition by department order by salary desc) = 2
过滤器。它将返回所有具有第二个薪水的员工。
如果部门中只有1条记录(不存在第二份薪水,部门中只有一名员工),则该记录将排名1,并且该部门的记录也不会被density_rank = 2过滤。
如果您只需要选择一个具有第二薪水的记录(不是所有雇员),那么row_number() over(partition by department order by salary desc) = 2
将起作用,但是如果有很多具有第二薪水的雇员,它将随机选择一个具有第二薪水的雇员。只有一个记录将被标记为row_number = 2。