在MySQL中计算运行总计

我有这个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语句来首先初始化运行的total变量,否则您将只获得一列NULL值。

以上是 在MySQL中计算运行总计 的全部内容, 来源链接: utcz.com/qa/414054.html

回到顶部