gpt4 book ai didi

mysql sql : how to cumulate count ?(计数总和)

转载 作者:行者123 更新时间:2023-11-29 02:15:53 24 4
gpt4 key购买 nike

我的目标是按日期累计注册用户数

这是我的mysql sql

SELECT MONTH( DATE ) AS `month`, COUNT(userid) 
FROM `stats`
WHERE `userid` = 1
GROUP BY `month`

这给了我每月的用户数量,但没有累计

结果:

month 1 : 90
month 2 : 50 (it should be 90 + 50)
month 3 : 10 (it should be 90 + 50 + 10)

我试过:

SELECT month,
SUM( CNT ) AS CUM_CNT_TILL_NOW
FROM (
SELECT MONTH( DATE ) AS `month`, COUNT(userid) AS CNT
FROM `stats`
WHERE `userid` = 1
GROUP BY `month`
);

出现错误:#1248 - 每个派生表都必须有自己的别名

最佳答案

在MySQL中,基本上有3种方式来做累加和:

  • 相关子查询。
  • 不平等与聚集相结合。
  • 变量。

后者是最简单的。但是,由于 group by 在 MySQL 中的工作方式,通常您需要一个子查询:

SELECT yyyy, mm, cnt,
(@sum := @sum + cnt) as cume_sum
FROM (SELECT YEAR(DATE) as yyyy, MONTH( DATE ) AS mm, COUNT(userid) AS CNT
FROM stats
WHERE userid = 1
GROUP BY yyyy, mm
) ym CROSS JOIN
(SELECT @sum := 0) params
ORDER BY yyyy, mm;

注意事项:

  • 这明智地考虑了年份。当您按月累积时,这通常是有意的。
  • @sum 变量在查询中定义。这很方便。
  • 需要子查询,因为有时变量不能像预期的那样与聚合一起工作。
  • 子查询有一个别名。

关于mysql sql : how to cumulate count ?(计数总和),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39811575/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com