MySQL总计数

时间:2015-11-30 21:10:53

标签: mysql

我有一个简单的查询组:

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

提前致谢

4 个答案:

答案 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:我这里没有使用你的表结构,但你可以得到想法