使用单个查询在 MySQL 中高效计算运行总计
本指南演示了一个 MySQL 查询来计算每日订单计数的运行总计,假设您的数据包含 date
列和指示成功付款的 hasPaid
标志。
这是优化后的查询:
<code class="language-sql">SET @runtot:=0; SELECT DATE(`date`) AS d, COUNT(*) AS c, (@runtot := @runtot + COUNT(*)) AS rt FROM `orders` WHERE `hasPaid` > 0 GROUP BY d ORDER BY d;</code>
此查询将变量 @runtot
初始化为零。 然后,核心逻辑计算每日订单数 (COUNT(*) AS c
),并在单个 @runtot := @runtot COUNT(*) AS rt
语句中同时更新运行总计 (SELECT
)。这避免了子查询或多次传递的需要,从而提高了效率。 GROUP BY d
子句按天对结果进行分组,并且 ORDER BY d
确保按顺序计算运行总计。 此方法有效地生成运行总计列 (rt
) 以及每日订单数 (c
) 和日期 (d
)。
以上是如何使用单个查询计算 MySQL 中的运行总计?的详细内容。更多信息请关注PHP中文网其他相关文章!