如何明智地获得最高薪水城市
How to get highest salary city wise
我在面试中被问到这个问题(希望你们能帮助我;在此先感谢)。
在 Hive 中,如何从员工 table 那里获得最高薪水的城市?
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 的最高薪水的城市。
我在面试中被问到这个问题(希望你们能帮助我;在此先感谢)。
在 Hive 中,如何从员工 table 那里获得最高薪水的城市?
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 的最高薪水的城市。