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