如何在城市中获得最高工资



我在一次采访中被问到这个问题(希望你们能帮助我,提前谢谢)。

在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

试试这个:

 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

基本上,您必须使用两个额外的变量。一个用于模拟分组,另一个用于跟踪排名。完成该查询后,根据所需的排名对其进行筛选。

Select Id , max(salary) from employee group by city;

在这种情况下,每个工资最高的城市都会显示相应的id。

相关内容

  • 没有找到相关文章

最新更新