朋友有個需求,其資料類似以下所示,LCount 與 NCount 是某些資料的計算結果,其目的是將 LCount 按照 5 的倍數區分群組,例如: 11~15、16~20、21~25…之類的,再去合計 NCount。
LCount | NCount |
---|---|
11 | 1 |
12 | 2 |
13 | 3 |
14 | 4 |
15 | 5 |
16 | 6 |
17 | 7 |
18 | 8 |
19 | 9 |
20 | 10 |
26 | 11 |
36 | 12 |
40 | 13 |
44 | 14 |
45 | 15 |
128 | 16 |
那這個其實就還是 group by 的問題,但是可以使用 SUM() OVER 加上 Partition by 來快速取得合計結果,作法如下。
1 | SELECT |
呈現的結果如下,Total 就是合計的結果。
LCount | NCount | rn | Total |
---|---|---|---|
11 | 1 | 1 | 15 |
12 | 2 | 1 | 15 |
13 | 3 | 1 | 15 |
14 | 4 | 1 | 15 |
15 | 5 | 1 | 15 |
16 | 6 | 6 | 40 |
17 | 7 | 6 | 40 |
18 | 8 | 6 | 40 |
19 | 9 | 6 | 40 |
20 | 10 | 6 | 40 |
26 | 11 | 11 | 11 |
36 | 12 | 12 | 25 |
40 | 13 | 12 | 25 |
44 | 14 | 14 | 29 |
45 | 15 | 14 | 29 |
128 | 16 | 16 | 16 |