【问题标题】:How to get highest salary city wise如何明智地获得最高薪水的城市
【发布时间】:2016-05-06 13:36:59
【问题描述】:

我在一次采访中被问到这个问题(希望你们能帮助我;在此先感谢)。

在 Hive 中,您如何从员工表中获得最高薪水的城市?

003 Amit Delhi India 12000
004 Anil Delhi India 15000
005 Deepak Delhi India 34000
006 Fahed Agra India 45000
007 Ravi Patna India 98777
008 Avinash Punjab India 120000
009 Saajan Punjab India 54000
001 Harit Delhi India 20000
002 Hardy Agra India 20000

【问题讨论】:

  • 我不知道 hive,但在 sql server 中我会使用row_number 并选择row_number = n 的记录。我认为hive 中可能会出现类似的情况
  • 你能给我这个查询吗
  • 工资真的是部门栏,不是员工栏吗?这意味着您的薪水将取决于您所在的部门。
  • 你是指薪水第n高的员工吗?
  • 按部门安排工资的想法很奇怪。但我猜是非常平等的。

标签: mysql sql hive mapreduce hiveql


【解决方案1】:

试试这个:

 SET @rank:=0;
 SET @dept:='';
 SET @desiredrank=8;  --For example. 

 SELECT ename, rank, salary
 FROM
 (
      SELECT
         ename, salary, 
         @rank:=CASE WHEN @dept=deptid THEN @rank+1 ELSE 1 END AS rank,
         @dept:=deptid AS department
      FROM employees e
      JOIN departments d
      ON e.deptid=d.deptid
      ORDER BY d.deptid, salary
 )
 WHERE rank=@desiredrank

基本上你必须使用两个额外的变量。一个用于模拟分组,一个用于跟踪排名。完成该查询后,将其过滤为您想要的排名。

【讨论】:

    【解决方案2】:
    Select Id , max(salary) from employee group by city;
    

    在这种情况下,将显示具有相应 id 的每个薪水最高的城市。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多