我有一个简单的查询组:
SELECT timestamp, COUNT(users)
FROM my_table
GROUP BY users
如何添加sum_each_day列,该列将对每行的用户数进行求和,并将其汇总到下一行,依此类推
输出应该是这样的:
timestamp | users | sum_each_day
2015-11-27 1 1
2015-11-28 5 6
2015-11-29 3 9
2015-11-30 7 16
提前致谢
答案 0 :(得分:1)
您可以使用子查询,如下所示:
SELECT timestamp,
num_users,
(SELECT COUNT(users)
FROM my_table
WHERE timestamp <= main.timestamp) sum_users
FROM (
SELECT timestamp,
COUNT(users) num_users
FROM my_table
GROUP BY timestamp
) main
答案 1 :(得分:0)
如果你真的需要在mysql中使用它,它会花费一些性能,但我相信带有计数的子查询将解决它:
SELECT t1.timestamp,count(),从my_table t2中选择计数(),其中t2.timestamp&lt; = t1.timestamp来自my_table t1用户分组
如果通过像PHP这样的脚本语言显示这些数据,那么保留计数器并显示每行的聚合会更容易。
答案 2 :(得分:0)
如果我理解相关内容,这将有效:
set @c=0;
SELECT `timestamp`,sum(`users`),(select @c:=@c+sum(`users`))
FROM `my_table`
group by `timestamp`;
答案 3 :(得分:0)
我会使用变量:
SET @total := 0;
SELECT timestamp, DayCount, (@total := @total + DayCount) AS Total
FROM
(SELECT timestamp, COUNT(users) AS DayCount
FROM my_table
GROUP BY timestamp) AS t1
Fiddler:我这里没有使用你的表结构,但你可以得到想法