我希望在SQL中按日期生成一个简单的累计总计,但遇到一个看似简单的问题。我已经开发了一个工作,但想象一下,如果没有额外的步骤,我可以做我想做的事情。基本上我正在寻找的是:
| Date | Count |
| 2015-01-01 | 1 |
| 2015-01-02 | 5 |
| 2015-01-03 | 8 |
| 2015-01-04 | 9 |
| 2015-01-05 | 9 |
我们可以假设该表只有两行 - id
和date
- 而我希望看到的就是上面的内容;但是,当我运行以下代码时,我会重复行:
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;
,但我想象有一种更好的方法可以让我失踪。
提前致谢!
答案 0 :(得分:0)
如果您不想使用distinct,可以使用GROUP BY DATE,COUNT