我在接受采访时被问到这个问题(希望你们能帮助我;提前谢谢)。
在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
答案 0 :(得分:0)
试试这个:
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
基本上你必须使用两个额外的变量。一个用于模拟分组,另一个用于跟踪排名。完成该查询后,将其过滤为您想要的排名。
答案 1 :(得分:-1)
Select Id , max(salary) from employee group by city;
在这种情况下,将显示每个薪水最高且具有相应身份的城市。