累積總計簡單來說就是根據行的遞進,每行顯示出之前行中的和。假設有下面一張表:
data | sales |
2020-03-22 12:43:14 | 10 |
2020-03-23 12:43:14 | 15 |
2020-03-24 12:43:14 | 20 |
2020-03-25 12:43:14 | 40 |
2020-03-26 12:43:14 | 50 |
2020-03-27 12:43:14 | 20 |
通常的需求是根據日期的遞進進行求和,因此我們可以鍵入以下的語句:
SELECT a1.data,a1.sales,sum(a2.sales) total
FROM assets a1,assets a2
where a1.data >= a2.data
GROUP BY a1.sales
ORDER BY a1.data
結果:
data | sales | sales |
2020-03-22 12:43:14 | 10 | 10 |
2020-03-23 12:43:14 | 15 | 25 |
2020-03-24 12:43:14 | 20 | 45 |
2020-03-25 12:43:14 | 40 | 85 |
2020-03-26 12:43:14 | 50 | 135 |
2020-03-27 12:43:14 | 20 | 155 |
簡單說下原理:連結查詢可以生成一張由多張表的行數相乘的大表,而自己和自己也可以進行連結查詢,上表就生成了一些連結的表然後對其進行篩選求和,第一行中日期為最小的所以 小於等於 它的日期只有一個,就是它自己;第二行中小於等於它的有兩個,就是最小的日期與它,所以產生一個連結表2,表2上只有10和15,所以計出sum為25。
其餘為同理。
没有评论:
发表评论