带有 COUNT 的 MySQL 运行总计

标签 mysql

我知道 set @running_sum=0; @running_sum:=@running_sum + ... 方法,但是,它似乎不起作用就我而言。

我的查询:

SELECT DISTINCT(date), COUNT(*) AS count 
   FROM table1
   WHERE date > '2011-09-29' AND applicationid = '123'
   GROUP BY date ORDER BY date

结果为我提供了唯一日期,以及应用程序 123 的出现次数。

我想保留 count 的总计,以查看累积增长。

现在我正在用 PHP 执行此操作,但我想将其全部切换到 MySQL。

使用本文第一行中的方法只是复制计数,而不是累加计数。

我错过了什么?

附言该集合非常小,只有大约 100 个条目。

编辑:你是对的 ypercube:

这是带有 running_sum 的版本:

SET @running_sum=0;
SELECT date, @running_sum:=@running_sum + COUNT(*) AS total FROM table1
   WHERE date > '2011-09-29' AND applicationid = '123'
   GROUP BY date ORDER BY date

count 列最终与我刚刚打印的 COUNT(*) 相同

最佳答案

更新的答案

OP 要求采用单一查询方法,这样就不必单独设置用户变量,而不必使用该变量来计算运行总计:

SELECT d.date,
       @running_sum:=@running_sum + d.count AS running
  FROM (  SELECT date, COUNT(*) AS `count`
            FROM table1
           WHERE date > '2011-09-29' AND applicationid = '123'
        GROUP BY date
        ORDER BY date ) d
  JOIN (SELECT @running_sum := 0 AS dummy) dummy;

用户变量的“内联初始化”对于模拟其他分析函数也很有用。事实上,我从答案中学到了这项技术 like this one .

原始答案

您需要引入一个封闭的查询来将 @running_sum 列在您的 COUNT(*)ed 记录上:

SET @running_sum=0;
SELECT d.date,
       @running_sum:=@running_sum + d.count AS running
  FROM (  SELECT date, COUNT(*) AS `count`
            FROM table1
           WHERE date > '2011-09-29' AND applicationid = '123'
        GROUP BY date
        ORDER BY date ) d;

另见 this answer .

关于带有 COUNT 的 MySQL 运行总计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8359077/

相关文章:

Android:发送要保存在服务器数据库中的文件

python - 从 python mysql 查询中过滤掉值

mysql - 从同一张表中获取记录数时如何编写mysql innerquery

mysql - 不带计数功能的计数记录

java - 使用 hibernate 选择 SQL 表中 3each 驱动程序的最后一个位置

php - MYSQL/PHP 我可以在哪里插入

php - 自动增量跳过数字?

mysql - 需要帮助构建 MySQL 查询 - 动态数据

java - 如何将别名支持的 "AS"添加到 MySQL 的 ANTLR Lex 文件中?

mysql ID自动递增不是从0开始