通过SUM()增加MySql变量不正确

时间:2019-07-23 12:21:40

标签: mysql

我正在尝试组合一个查询,该查询按日期将记录与该特定日期的总计(一天中可能有多个条目)进行分组,但是我还需要一个运行总计,打算将MySQL变量用于。我的问题是,累计总数列似乎仅包含该日期的SUM()。

因此,这对于每天的总计工作正常

foo[bar, np.arange(3)][0, 1] = foo[ bar[0,1],  Y[0,1] ]
                             = foo[2, 1]
                             = 50 

添加我认为在那里的相当简单的变量以跟踪运行总计

SELECT
YEAR(log_at) as year,
MONTH(log_at) as month,
DAY(log_at) as day,
SUM(ev) as dailyTotal,
count(*) as count
FROM tracks
WHERE user_id = 1
GROUP BY year, month, day
ORDER BY year, month, day ASC

enter image description here 累计变量仅包含当天的总数。但是,如果我将其更改为增加1而不是SUM(),它似乎可以正常工作

enter image description here

对于实现所需行为的任​​何建议,我们将不胜感激!

1 个答案:

答案 0 :(得分:1)

您必须首先创建整个选择,然后才进行累积填充,因为您不能同时添加GROUP BY的一列总和(我真的不知道为什么会生面团)

SELECT 
`year`,
`month`,
`day`,
`dailyTotal`,
@cum := @cum + `dailyTotal` as `cumulative`,
`count`
FROM
(
SELECT
YEAR(log_at) as year,
MONTH(log_at) as month,
DAY(log_at) as day,
SUM(ev) as dailyTotal,
count(*) as count
FROM tracks
WHERE user_id = 1
GROUP BY year, month, day
ORDER BY year, month, day ASC
) a
JOIN (SELECT @cum := 0) b

我用少一些的表格测试了它……也许我在这里弄错了。但我希望你能理解。