通过 month/year 和 id 获取最后一条记录

Get last record by month/year and id

我需要获取每个 ID 的每个 month/year 的最后一条记录。

我的 table 每天为每个 id 捕获一个累积的订单值。所以,我需要最后我只有每个 id 的月份的最后一条记录。

我相信没有简单的东西,但是找到的例子我无法为我的案例复制。

这是我的输入数据和预期结果的示例:db_fiddle

我的尝试不包括按月和年分组:

  select ar.id, ar.value, ar.aquisition_date
    from table_views ar
    inner join (
        select id, max(aquisition_date) as last_aquisition_date_month
        from table_views 
        group by id
    )ld
        on  ar.id = ld.id and ar.aquisition_date = ld.last_aquisition_date_month

你可以这样做:

with tn as (
  select
    *,
    row_number() over (partition by id, date_trunc('month', aquisition_date) order by aquisition_date desc) as rn
  from table_views
)
select * from tn where rn = 1

tn cte 添加一个行号,该行号按日期的降序递增计数,对于每个 month/id.. 然后你只取带有 rn=1 的行号,这是最后一个aquisition_date 任何给定月份,每个 id