Я хочу создать простой кумулятивный итог по дате в 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;
, но я думаю, что есть лучший способ, который мне просто не хватает.
Заранее спасибо!
DISTINCT
здесь. См. также: stackoverflow.com/questions/5698452/ а> - person G. Cito   schedule 02.03.2015