PostgreSQL - OVER子句中的WHERE子句?

时间:2011-06-20 22:31:32

标签: postgresql

我需要在over子句中使用where子句。怎么样?

SELECT SUM(amount) OVER(WHERE dateval > 12)

或类似的东西。

- 编辑 -

更多详情

我的表格格式化为年,月和金额列。

我想选择所有年,月和金额行并创建第四个“虚拟列”,其中过去12个月的金额列的总和。

例如:

年份|月|金额
2001 | 03 | 10个
2001 | 05 | 25个
2001 | 07 | 10

应该创建:

年份|月| AMOUNT |滚动12个月
2001 | 03 | 10 | 10个
2001 | 05 | 25 | 35个
2001 | 07 | 10 | 45

2 个答案:

答案 0 :(得分:5)

根据您对三列结果集的查询,以下内容是否适用于您?

SELECT
    SUM(amount) OVER(ORDER BY YEAR ASC, MONTH ASC
                     ROWS BETWEEN 11 PRECEDING AND CURRENT ROW)
...

答案 1 :(得分:0)

select a,(select sum(a) from foo fa where fa.a > fb.a) from foo fb;

不使用,效率非常低,因为它为每个查询运行新的子查询,但它可以工作。