每人每月最新行数

Latest row per person per month

我需要每个月每个人一行,并且该行应该是该月的最大日期。

可用数据:

person  date         value
a       jan/1/2019     10
a       jan/2/2019     20
a       feb/3/2019     30
b       jan/10/2019    20
b       jan/20/2019    30
b       feb/1/2019     40
b       feb/12/2019    30

期望的输出:

a       jan/2/2019     20
a       feb/3/2019     30
b       jan/20/2019    30
b       feb/12/2019    30

我不知道如何做到这一点。非常感谢任何帮助。

您可以在子查询中使用聚合并通过 in 运算符连接它们:

select *
  from tab
 where (person,date) in
  (
   select person,max(date)
     from tab
    group by person,month(date),year(date)
   )

Demo