【问题标题】:PostgreSQL select max with group by and additional value [duplicate]PostgreSQL选择最大值与分组依据和附加值[重复]
【发布时间】:2015-08-01 20:44:02
【问题描述】:

有以下数据from a SELECT * FROM (SELECT...) AS foo

ID    Country   Area
1     US        100
1     UK        200
2     AU        150
2     NZ        250

如何通过ID 选择排名靠前的地区和国家?所以GROUP BY IDMAX(DESC)还包括County

查询的结果是:

1     UK     200
2     NZ     250

【问题讨论】:

    标签: sql postgresql group-by


    【解决方案1】:
    SELECT DISTINCT ON (ID)
           ID, Country, Area
    FROM   foo
    ORDER  BY ID, Area DESC NULLS LAST;
    

    详细解释和特殊情况下更快替代方案的链接:

    【讨论】:

      【解决方案2】:

      试试这个

      select ID,Country,Area
      from (SELECT...) AS foo
      WHERE Area = (SELECT MAX(Area)
                    FROM (SELECT...) AS foo2
                    WHERE foo.ID = foo2.ID )
      

      【讨论】:

      • 感谢您的回复。 Erwin Brandstetters 解决方案使得无需运行 (SELECT.. 两次) 就可以做到这一点。
      • @Matt true 他的回答更好!
      猜你喜欢
      • 2013-05-24
      • 1970-01-01
      • 2017-10-18
      • 2017-08-11
      • 2020-08-19
      • 2020-10-27
      • 1970-01-01
      • 1970-01-01
      • 2015-11-10
      相关资源
      最近更新 更多