如何在postgresql中找到列中的最大值?

时间:2011-02-06 00:54:50

标签: sql postgresql max

例如:

name | weight
jon    100    
jane   120    
joe    130

我如何只返回体重最大的人的姓名?

4 个答案:

答案 0 :(得分:78)

SELECT name FROM tbl ORDER BY weight DESC LIMIT 1

比其他答案更高效,只产生一行。

答案 1 :(得分:36)

使用此:

select name
from tbl
where weight = (select max(weight) from tbl)

答案 2 :(得分:2)

ORDER BY DESC将带有空值的行放在顶部。

避免返回与空值相对应的结果:

SELECT name FROM tbl WHERE weight = (SELECT MAX(weight) FROM tbl);

注意:如果多人的权重等于最大权重,则此查询将返回多个结果。要只抓取一个,请在查询末尾添加LIMIT 1

致谢和更多信息:

Package.json file Inside

Why do NULL values come first when ordering DESC in a PostgreSQL query?

MIN/MAX vs ORDER BY and LIMIT

答案 3 :(得分:0)

如果您需要查找多行,例如每个人最大体重的日期:

name | weight | day
don    110      1
don    120      20
don    110      30
joe    90       1
joe    80       15
joe    85       30

即您想获得"don | 120 | 20"的“唐”,而想要"joe | 90 | 1"的乔,则可以这样写:

SELECT (array_agg(name ORDER BY weight DESC))[1], max(weight), (array_agg(day ORDER BY weight DESC))[1] FROM tbl