sql - 查找行组的最大值 POSTGRESQL

标签 sql postgresql

确定任期最长的总统的姓名、党派和任职年限 派对。我不能使用 join 关键字。

table 长:

Name         | Party       | years_served|
-------------+-------------+-------------+
Roosevelt    | Democratic  | 12
Madison      | Demo-rep    | 8
Monroe       | Demo-rep    | 8
Adams        | Demo-rep    | 4

所以结果将是 Roosevelt、madison 和 monroe 出现,而​​ adams 没有出现,因为他没有服役 8 年,这是演示代表的最长服役时间。

最佳答案

您可以使用 dense_rank()窗口函数:

with cte as (
    select
        *, dense_rank() over(partition by Party order by years_served desc) as rnk
    from Table1
)
select
    Name, Party, years_served
from cte
where rnk = 1

sql fiddle demo

关于sql - 查找行组的最大值 POSTGRESQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27061447/

相关文章:

mysql - 如何优化此 MySQL 查询

mysql - 在 SQL : Error 中使用转换语句

postgresql - 在 PostgreSQL 的记录中查找最后出现的值

sql - ORDER BY euclidean distance 并返回距离?

postgresql - haskell postgresql-简单不兼容类型_int8和Int64(和整数)

sql - Postgresql在ubuntu中更改数据目录

javascript - 存储和检索图像数据 URL

mysql - 使用 SQL 查询(MySQL 数据库)获取不同项目的最新 "event"

postgresql - 将数组插入postgresql错误

postgresql - 返回数据库结果集的PlPgsql函数