I want to display sum of 4 weeks sales every week(current week plus the previous 3 week) per item.
Raw data
+--------+--------+----------+
| Item | Week | sales |
+--------+--------+----------+
| a | 1 | 10 |
| a | 2 | 10 |
| a | 4 | 10 |
| a | 7 | 10 |
| a | 8 | 10 |
| a | 10 | 10 |
| b | 1 | 10 |
| b | 2 | 10 |
| b | 4 | 10 |
| b | 7 | 10 |
| b | 8 | 10 |
| b | 10 | 10 |
+--------+--------+----------+
Expected Result(take item a as example)
+------+------+------------------------------------------------------+
| Item | Week | sales |
+------+------+------------------------------------------------------+
| a | 1 | 10 |
| a | 2 | 20 |
| a | 3 | 30 |
| a | 4 | 30 |
| a | 5 | 20(Note: sales of Week 5+Week 4+Week 3+Week 2) |
| a | 6 | 10 |
| a | 7 | 20[Note: 10(Week 7)+0(Week 6)+0(Week 5)+10 (Week 4)] |
| a | 8 | 20 |
| a | 9 | 20 |
| a | 10 | 30(Note: sales of Week 10+Week 9+Week 8+Week 7) |
+------+------+------------------------------------------------------+
I tried to use
sum (sales) over (partition by item order by week row 3 preceding)
However, it skips the Week with no sale record and add up all the none-zero values. For example: For Week 7, sum over calculates result as 40 as it adds the sales from Week 7,4,2,1. Is there a way to achieve the expected results?