繁体   English   中英

根据列最大值获取记录

[英]Get records based on column max value

我有带数据的汽车表

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

我需要从表格中获取国家,汽车和价格,每个国家的价格最高

Germany Mercedes    30000
Japan   Honda       20000

尝试

    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

使用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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM