提取 Postgresql 中每个 ID 的最后一行
考虑一个包含名为 id、date 和 another_info 列的数据集。目标是提取每个唯一 id 的最后一个信息(行)。
为了在 Postgresql 中完成此操作,通常使用两种方法:
Distinct On Operator
Postgresql 提供了 unique on 运算符,它允许您指定仅返回特定列的不同值。在这种情况下,可以按如下方式使用运算符:
select distinct on (id) id, date, another_info from the_table order by id, date desc;
此查询确保仅返回每个唯一 id 的最后一个实例,并按日期降序排列。
窗口函数
或者,您可以使用窗口函数来实现相同的结果。窗口函数允许您对分区的行集执行计算或聚合。在这种情况下,可以使用以下查询:
select id, date, another_info from ( select id, date, another_info, row_number() over (partition by id order by date desc) as rn from the_table ) t where rn = 1 order by id;
此查询使用 row_number() 函数为每个 id 分区中的每一行分配一个序号。 where 子句过滤结果以仅包含具有最高 rn 值的行(即每个 id 的最后一行)。
以上是如何提取 PostgreSQL 中每个 ID 的最后一行?的详细内容。更多信息请关注PHP中文网其他相关文章!