How do I find the largest value in a column in postgres sql?

后端 未结 4 1597
南方客
南方客 2021-02-03 17:44

For example:

name | weight
jon    100    
jane   120    
joe    130

How do I only return the name of the person with the largest weight?

相关标签:
4条回答
  • 2021-02-03 18:25

    If you need to find multiple rows, e.g. date on which each person had maximum weight:

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

    i.e. for "don" you want to get "don | 120 | 20" and for joe you want "joe | 90 | 1", then you can write:

    SELECT name, max(weight), (array_agg(day ORDER BY weight DESC))[1] FROM tbl GROUP BY name
    
    0 讨论(0)
  • 2021-02-03 18:28

    ORDER BY DESC puts rows with null values at the top.

    To avoid returning results corresponding to null values:

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

    Note: This query will return multiple results if multiple people have a weight equal to the maximum weight. To grab just one, add LIMIT 1 to the end of the query.


    Acknowledgements and more information:

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

    MIN/MAX vs ORDER BY and LIMIT

    Postgres MAX Function

    0 讨论(0)
  • 2021-02-03 18:32
    SELECT name FROM tbl ORDER BY weight DESC LIMIT 1
    

    Much more performant than the other answer and results in one row only.

    0 讨论(0)
  • 2021-02-03 18:34

    Use this:

    select name
    from tbl
    where weight = (select max(weight) from tbl)
    
    0 讨论(0)
提交回复
热议问题