获取每组分组sql结果的最大值记录

omtl5h9j  于 2021-06-21  发布在  Mysql
关注(0)|答案(17)|浏览(503)

如何获得包含每个分组集的最大值的行?
我在这个问题上看到过一些过于复杂的变化,没有一个能给出好的答案。我试着把最简单的例子放在一起:
如果有这样一个表,其中有person、group和age列,那么您如何获得每组中最年长的人(一组中的平局应给出第一个按字母顺序排列的结果)

Person | Group | Age
---
Bob  | 1     | 32  
Jill | 1     | 34  
Shawn| 1     | 42  
Jake | 2     | 29  
Paul | 2     | 36  
Laura| 2     | 39

期望结果集:

Shawn | 1     | 42    
Laura | 2     | 39
46scxncf

46scxncf16#

你也可以试试

SELECT * FROM mytable WHERE age IN (SELECT MAX(age) FROM mytable GROUP BY `Group`) ;
jjjwad0x

jjjwad0x17#

我针对sqlite(可能还有mysql)的简单解决方案:

SELECT *, MAX(age) FROM mytable GROUP BY `Group`;

但是,它在postgresql和其他一些平台中不起作用。
在postgresql中,可以使用distinct on子句:

SELECT DISTINCT ON ("group") * FROM "mytable" ORDER BY "group", "age" DESC;

相关问题