选择记录字段包含另一个字段的最大值

时间:2014-01-22 14:22:03

标签: sql postgresql

我正在使用PostgreSQL版本9.x

我想选择包含分组项目中字段最大值的记录字段。 假设这些是我的表和内容;

id    |     name     |   surname   |      age

1          ahmet           adal1            25
2          mehmet          mdal2            23
3          ahmet           adal3            27
4          ahmet           adal4            22
5          mehmet          mdal5            28

我想按名称对所有记录进行分组,并选择包含最大年龄的记录的姓氏。

我应该得到结果;

adal3
mdal5

这是我想要运行的查询;

select p.surname 
from person p
group by name
having max(age)

我知道这不起作用并且表达式必须是布尔值。我这样做只是为了更好地解释自己。

有没有办法用sql获得我想要的东西,尤其是PostgreSQL?

谢谢!

1 个答案:

答案 0 :(得分:1)

Postgres的语法distinct on执行此操作:

select distinct on (name) p.surname 
from person p
order by name, age desc