2017-03-22 109 views
0

我有一個數據獲取記錄

country | car  | price 
--------------------- 
Germany | Mercedes | 30000 
Germany | BMW  | 20000 
Germany | Opel  | 15000 
Japan | Honda | 20000 
Japan | Toyota | 15000 

我需要得到國家,汽車和價格表,與最高價 每個國家

Germany Mercedes 30000 
Japan Honda  20000 
+0

如果你有兩輛車的價格最高的國家?你會得到所有這些行還是隻有一個(哪一個?)? – Aleksej

+0

是的所有這些行在這種情況下 –

回答

3

嘗試

汽車表
select cars.* FROM cars 
    INNER JOIN (
     select country, max(price) AS maxprice from cars 
     GROUP BY country 
    ) m 
    ON cars.country = m.country AND cars.price = m.maxprice 
+0

謝謝,正是我所需要的 –

1

使用ROW_NUMBER()

SELECT * 
FROM (SELECT *, 
       ROW_NUMBER() OVER (PARTITION BY country 
            ORDER BY price DESC) as rn 
     FROM cars) as T 
WHERE T.rn = 1 

如果你允許的聯繫,使用RANK代替

SELECT * 
FROM (SELECT *, 
       RANK() OVER (PARTITION BY country 
          ORDER BY price DESC) as rn 
     FROM cars) as T 
WHERE T.rn = 1