繁体   English   中英

为什么 MySQL 中的这个累积总和不起作用?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM