mysql - 在 MySQL 中计算运行总计

标签 mysql sql

我有这个 MySQL 查询:

SELECT DAYOFYEAR(`date`)  AS d, COUNT(*) 
FROM  `orders` 
WHERE  `hasPaid` > 0
GROUP  BY d
ORDER  BY d

返回如下内容:

d  | COUNT(*) |
20 |  5       |
21 |  7       |
22 | 12       |
23 |  4       |

我真正想要的是最后的另一列显示运行总数:

d  | COUNT(*) | ??? |
20 |  5       |   5 |
21 |  7       |  12 |
22 | 12       |  24 |
23 |  4       |  28 |

这可能吗?

最佳答案

也许对您来说是一个更简单的解决方案,并且可以防止数据库执行大量查询。这只会执行一个查询,然后在一次通过中对结果进行一些数学运算。

SET @runtot:=0;
SELECT
   q1.d,
   q1.c,
   (@runtot := @runtot + q1.c) AS rt
FROM
   (SELECT
       DAYOFYEAR(`date`) AS d,
       COUNT(*) AS c
    FROM  `orders`
    WHERE  `hasPaid` > 0
    GROUP  BY d
    ORDER  BY d) AS q1

这将为您提供一个额外的 RT(运行总计)列。不要错过顶部的 SET 语句,先初始化运行的总变量,否则您只会得到一列 NULL 值。

关于mysql - 在 MySQL 中计算运行总计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/664700/

相关文章:

python - MySQL选择字段的元素数

mysql - 在mysql中按问题分组

javascript - 用 10 个随机字符生成 3 个字符

mysql - 程序MySql

mysql - 带 ? 的输入参数语法在 MySQL 查询中

php - 查询数据库以取回数组

php - 添加 mysql 后 ical feed 不起作用

mysql - SQL - 截断了不正确的 DOUBLE 值

sql - 两列作为主键还是一列作为 PK + 索引?

mysql - SQL NOT IN 仍包含应排除的行