在Hive

时间:2015-05-27 16:45:32

标签: hive hiveql

我是新手。我有以下员工表。

ID  Name  Country  Salary  ManagerID

我使用以下内容检索了第3个最高工资。

select name , salary From (
    select name, salary from 
    employee sort by salary desc limit 3)
    result sort by salary limit 1;

如何为每个国家/地区显示第三个最高薪水?我们可以使用OVER(PARTITION BY country)吗?我尝试使用语言手动窗口和分析,但我发现它很难理解。请帮忙!

1 个答案:

答案 0 :(得分:2)

你肯定在使用窗口功能的正确轨道上。 row_number()是一个很好用的功能。

select name, salary
from (
  select name
    , salary
    , row_number() over (partition by country order by salary desc) idx
  from employee ) x
where idx = 3

按工资订购时,请确保它是数字类型,否则将无法正确排序。