【发布时间】:2016-01-13 04:01:27
【问题描述】:
在 Redshift 中使用非规范化结构并计划是继续创建记录,同时检索仅考虑针对用户的最新属性。
以下是表格:
user_id state created_at
1 A 15-10-2015 02:00:00 AM
2 A 15-10-2015 02:00:01 AM
3 A 15-10-2015 02:00:02 AM
1 B 15-10-2015 02:00:03 AM
4 A 15-10-2015 02:00:04 AM
5 B 15-10-2015 02:00:05 AM
所需的结果集是:
user_id state created_at
2 A 15-10-2015 02:00:01 AM
3 A 15-10-2015 02:00:02 AM
4 A 15-10-2015 02:00:04 AM
我有检索上述结果的查询:
select user_id, first_value AS state
from (
select user_id, first_value(state) OVER (
PARTITION BY user_id
ORDER BY created_at desc
ROWS between UNBOUNDED PRECEDING and CURRENT ROW)
from customer_properties
order by created_at) t
where first_value = 'A'
这是检索的最佳方式还是可以改进查询?
【问题讨论】:
-
created_at 列正在查询中使用,但在示例数据中缺失,问题已更新。
标签: sql postgresql greatest-n-per-group amazon-redshift