2016-05-06 5 views
-1

私はこの質問をインタビューで尋ねられました(うまくいけば、皆さんは私を助けることができます、事前に感謝します)。最高給与都市を得る方法

ハイブでは、従業員のテーブルから最高の給与を得る方法は?

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

ハイブはわかりませんが、SQL Serverでは 'row_number'を使用して' row_number' = nのレコードを選択します。私は "ハイブ"で同様のことができると思うでしょう – HoneyBadger

+0

あなたは私にこれを尋ねることができます – learner

+0

給料は本当に部門の列で、従業員の列ではありませんか?それはあなたの給料があなたが属する部署によって決まることを意味します。 – quest4truth

答えて

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 [email protected] 

は、基本的には、2つの余分な変数を使用する必要があります。 1つはグループ化をシミュレートし、もう1つはランクを追跡します。そのクエリが完了したら、必要なランクをフィルタします。

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

この場合、それぞれのIDで最高給与の都市が表示されます。

関連する問題