使用窗口函数在Postgres中按日期累计总计

时间:2015-03-02 18:45:49

标签: sql postgresql window-functions

我希望在SQL中按日期生成一个简单的累计总计,但遇到一个看似简单的问题。我已经开发了一个工作,但想象一下,如果没有额外的步骤,我可以做我想做的事情。基本上我正在寻找的是:

| Date | Count | | 2015-01-01 | 1 | | 2015-01-02 | 5 | | 2015-01-03 | 8 | | 2015-01-04 | 9 | | 2015-01-05 | 9 |

我们可以假设该表只有两行 - iddate - 而我希望看到的就是上面的内容;但是,当我运行以下代码时,我会重复行:

SELECT date, count(*) over (order by date) AS cumulative_count FROM my_table;

返回:

| Date | Count | | 2015-01-01 | 1 | | 2015-01-02 | 5 | | 2015-01-02 | 5 | | 2015-01-02 | 5 | | 2015-01-02 | 5 | | 2015-01-02 | 5 | | 2015-01-03 | 8 | | 2015-01-03 | 8 | ...etc.

我的解决方案一直是使用SELECT DISTINCT date, count(*) over (order by date) AS cumulative_count FROM my_table;,但我想象有一种更好的方法可以让我失踪。

提前致谢!

1 个答案:

答案 0 :(得分:0)

如果您不想使用distinct,可以使用GROUP BY DATE,COUNT