查找最近日期包含特定字符串的所有记录

Find all records which contain certain string at the latest date

我有一个 table 具有订单更改历史记录

 cart_id     date                    action
 1           01/01/2020 3:00         approved
 1           01/01/2020 2:00         saved
 2           02/03/2020 9:00         saved
 2           02/03/2020 5:00         created

我需要获取“保存”了最新操作的所有购物车 ID 的列表。所以在这种情况下,它只会 return 购物车 ID 2,因为“已保存”是最新的操作,而购物车 ID 1 的最新操作是“已批准”。我不太确定从哪里开始,有什么方法可以实现吗?

您可以使用 ROW_NUMBER()。例如:

select cart_id
from (
  select cart_id, action,
    row_number() over(partition by cart_id order by date desc) as rn
  from t
) x
where rn = 1 and action = 'saved';