[英]Why won't this cumulative sum in MySQL work?
我想在两个日期之间按小时获得订单的累计总和:
SELECT tDate, nHour, COUNT(tIPN) AS num, (@csum := @csum + COUNT(tIPN)) as sum
FROM TBL_DATES
JOIN TBL_HOURS
LEFT JOIN VIEW_PAYPAL ON DATE(tIPN) = tDate AND HOUR(tIPN) = nHour
JOIN (SELECT @csum := 0) r
WHERE tDate BETWEEN '2018-08-05' AND '2018-08-17'
GROUP BY tDate, nHour
ORDER BY tDate, nHour;
但我得到这个结果:
tDate nHour num sum
2018-08-05 0 2 2
2018-08-05 1 1 1
2018-08-05 2 0 0
2018-08-05 3 0 0
2018-08-05 4 0 0
2018-08-05 5 0 0
2018-08-05 6 2 2
2018-08-05 7 4 4
2018-08-05 8 5 5
2018-08-05 9 5 5
2018-08-05 10 5 5
2018-08-05 11 7 7
2018-08-05 12 11 11
我究竟做错了什么? 我尝试使用单独的 SET 语句,但没有任何区别。
此代码应该适合您:
SET @csum := 0;
SELECT tDate, nHour, COUNT(tIPN) AS num, (@csum := @csum + COUNT(tIPN)) as cumulative_sum
FROM TBL_DATES
JOIN TBL_HOURS
LEFT JOIN VIEW_PAYPAL ON DATE(tIPN) = tDate AND HOUR(tIPN) = nHour
WHERE tDate BETWEEN '2018-08-05' AND '2018-08-17'
GROUP BY tDate, nHour
ORDER BY tDate, nHour;
首先,您应该使用SET
初始化@csum
变量。
其次,拥有一个名为sum
的列别名并不是最好的主意,因为它是一个保留关键字。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.