在没有自连接的第n行之前

时间:2014-10-06 17:14:25

标签: postgresql window-functions

我有一个大型查询,结果如下:

Date      Cost
------------------
6-Oct    24.05
5-Oct    34.56
4-Oct    24.76
3-Oct    12.89
2-Oct    11.34
1-Oct    21.76
30-Sept  32.89
29-Sept  11.34

我正在尝试使用windows

进行以下操作
Date      Cost   Previous_week
-------------------------------
6-Oct    24.05   32.89
5-Oct    34.56   11.34
4-Oct    24.76   NULL
3-Oct    12.89   NULL
2-Oct    11.34   NULL
1-Oct    21.76   NULL
30-Sept  32.89   NULL
29-Sept  11.34   NULL

似乎窗口函数只能用于聚合,是否有另一种方法可以获得第7行?

我不想做自我加入。

1 个答案:

答案 0 :(得分:1)

我应该花更多的时间阅读文档。

select date, cost
nth_value(cost, 7)
over(order by date desc
rows between unbounded preceding and unbounded following)
as previous_week

http://docs.aws.amazon.com/redshift/latest/dg/r_Examples_of_NTH_WF.html