2016-04-20 69 views
2
------------------------------------------------ 
country | salary | name | adress 
------------------------------------------------ 
India | 10000 | ch1  | something 
japan | 20000 | ch2  | nothing 
india | 25000 | ch3  | hjsdj 
japan | 30000 | ch4  | hjhjhj 

我需要在日本和印度的地址,名稱得到最高工資。我如何獲得最高工資排,按國家分組

+0

您正在使用哪些DBMS?這可以使用窗口函數輕鬆解決。 –

回答

4

有一個子查詢返回每個國家的最高工資。加入這個結果來獲得最高工資的用戶。

select t1.* 
from tablename t1 
join (select country, max(salary) as max_salary 
     from tablename group by country) t2 
    on t1.country = t2.country and t1.salary = t2.max_salary 

將返回兩個用戶,如果是平局(即幾個用戶使用相同的最高薪水。)

0

如果碰巧你的DBMS支持ROW_NUMBER()OVER()函數,你可以嘗試

select * from 
    (select ROW_NUMBER() OVER(PARTITION BY country ORDER BY salary DESC) as rn 
    , country, salary as max_salary, name, adress 
    from tablename 
) t 
where rn = 1 

請注意,與jarlh的查詢相反,它將只返回該國家的同等頂級薪水行的任意一行。