【问题标题】:Find second highest salary in each department using rank/dense_rank in hive使用 hive 中的 rank/dense_rank 查找每个部门的第二高薪水
【发布时间】:2019-08-08 18:44:21
【问题描述】:

这是面试时问我的两个问题,但唯一的条件是使用 rank/dense_rank。

使用 rank/dense_rank 在每个部门中查找第二高的薪水 蜂巢。

  1. 当每个部门都有足够的记录时。
  2. 当少数部门只有 1 条记录时。

指导我这是否有效。 如果是,那么相同的查询应该是什么。

【问题讨论】:

标签: hadoop hive hiveql rank dense-rank


【解决方案1】:

如果您需要选择所有第二薪雇员,请使用

dense_rank() over(partition by department order by salary desc) = 2 过滤器。它将返回所有具有第二薪水的员工。

当部门中只有 1 条记录(不存在第二个薪水,部门中有一名员工)时,它将被排名为 1,并且您将不会得到该部门按dense_rank = 2 过滤的记录。

如果您只需要选择一个记录(不是所有员工)第二薪,那么row_number() over(partition by department order by salary desc) = 2 将起作用,但如果有很多员工第二薪,它将随机选择一名第二薪员工。只有一条记录会被标记为 row_number = 2。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-03-04
    • 1970-01-01
    • 2021-12-21
    • 1970-01-01
    • 2019-04-17
    • 2019-10-03
    • 2018-06-20
    相关资源
    最近更新 更多