Hadoop 使用hive中的rank/dense_rank查找每个部门的第二高工资
这是在一次采访中向我提出的两个问题,但唯一的条件是使用秩/密秩 使用中的秩/密秩查找每个部门的第二高工资 蜂箱Hadoop 使用hive中的rank/dense_rank查找每个部门的第二高工资,hadoop,hive,hiveql,rank,dense-rank,Hadoop,Hive,Hiveql,Rank,Dense Rank,这是在一次采访中向我提出的两个问题,但唯一的条件是使用秩/密秩 使用中的秩/密秩查找每个部门的第二高工资 蜂箱 当每个部门有足够的记录时 当几个部门只有一个记录时 指导我这是否有效。 如果是,那么应该查询哪些内容。如果需要选择所有二等薪资员工,则使用 densite_rank()over(按部门顺序按薪资描述划分)=2filter。它将以二等工资返还所有员工 当部门中只有1条记录时(不存在第二个薪资,部门中有一名员工),它将排名1,并且您将不会获得该部门的任何记录,通过密集_rank=2进行过滤
如果是,那么应该查询哪些内容。如果需要选择所有二等薪资员工,则使用
densite_rank()over(按部门顺序按薪资描述划分)=2
filter。它将以二等工资返还所有员工
当部门中只有1条记录时(不存在第二个薪资,部门中有一名员工),它将排名1,并且您将不会获得该部门的任何记录,通过密集_rank=2进行过滤
如果您只需要选择一条记录(不是所有员工)具有第二工资,则
行(按部门顺序划分,按工资描述)=2
将起作用,但如果有许多员工具有第二工资,它将随机选择一名具有第二工资的员工。只有一条记录将被标记为行数=2。问题的可能重复是通过使用分析函数(排名/密集排名),因此它与不使用分析函数有点不同(如何在不使用分析函数的情况下获得第二高的薪资部门?)