Redshift last_value 检索最新行

Redshift last_value to retrieve the most current row

下面是获取行的最新版本的一种简单方法。虽然这对单行“没问题”,但当需要评估每一行时它确实会变慢。

SELECT * 
FROM dev.A t1 
where to_char(last_operation_date,'yyyymmdd') = (select max(to_char(last_operation_date,'yyyymmdd')) 
                                                 from dev.A t2 
                                                 where t1.inte_id = t2.inte_id)
and t1.inte_id = 'PPP2434'

您可以使用 ROW_NUMBER() 函数查找每个 inte_id 的最新行,而无需使用相关子查询。相关子查询通常需要嵌套循环步骤,这会减慢它们的速度。

SELECT * 
FROM (
    SELECT *
          ,ROW_NUMBER() OVER( PARTITION BY inte_id ORDER BY last_operation_date DESC ) last_op_order
    FROM dev.A t1 
    and t1.inte_id = 'PPP2434'
    )
WHERE last_op_order = 1;