首页 >数据库 >mysql教程 >PostgreSQL中如何为每个类别选择最大日期的ID?

PostgreSQL中如何为每个类别选择最大日期的ID?

Barbara Streisand
Barbara Streisand原创
2024-12-27 18:28:11775浏览

How to Select the ID with the Maximum Date for Each Category in PostgreSQL?

在 PostgreSQL 中选择按类别分组的最大日期 ID

要检索 PostgreSQL 中每个类别的最大日期 ID,我们可以使用强大的 DISTINCT ON 子句,它是标准 DISTINCT 命令的扩展。此子句允许我们根据特定条件聚合数据,同时保留各个行的唯一性。

考虑以下示例数据:

id  category  date
1   a         2013-01-01
2   b         2013-01-03
3   c         2013-01-02
4   a         2013-01-02
5   b         2013-01-02
6   c         2013-01-03
7   a         2013-01-03
8   b         2013-01-01
9   c         2013-01-01

为每个行选择具有最大日期的 ID使用 DISTINCT ON 的类别语法为:

SELECT DISTINCT ON (category)
       id
FROM   tbl
ORDER  BY category, date DESC;

结果输出将be:

id
7
2
6

此查询首先按类别升序对数据进行排序,然后按日期降序排序。然后,DISTINCT ON 子句确保对于每个不同类别,仅显示具有最大日期的行,从而产生所需的输出。

如果日期列允许 NULL 值,则包含 NULL 很重要LAST 子句确保 NULL 值排在最后。例如:

SELECT DISTINCT ON (category)
       id
FROM   tbl
ORDER  BY category, date DESC NULLS LAST;

以上是PostgreSQL中如何为每个类别选择最大日期的ID?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn