2017-03-22 113 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