我有一个名为 history 的表,其中包含字段 id、lastname、event 和 date 强>。
它保存在我办公室工作的人的事件,如“进入办公室”、“离开办公室”、“生病”、“假期”等。
我需要获取每个人的最后一个事件。
这是我尝试过的方法,但它不起作用:
SELECT lastname, event, max(date)
FROM personshistory
GROUP BY lastname, event;
最佳答案
您可以使用 distinct on
:
select distinct on (lastname) ph.*
from personshistory
order by lastname, date desc;
distinct on
是一个非常方便的 Postgres 扩展。它为括号中表达式的每个值保留一行。特定行由 order by
子句确定——基于 distinct on
键之后的键。
关于sql - PostgreSQL:如何获取 GROUP BY 的 max()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57481900/