与分组的总和计数[重复]
Posted
技术标签:
【中文标题】与分组的总和计数[重复]【英文标题】:count of sum with group by [duplicate] 【发布时间】:2013-01-31 09:55:37 【问题描述】:可能重复:Calculate a running total in mysql
我需要获取为每个日期分组的计数总和。现在我正在运行以下查询并得到如下输出:
SELECT `timestamp` , COUNT( * )
FROM `A`
WHERE `timestamp` >= '2013-01-04 07:12:12'
GROUP BY DATE_FORMAT( `timestamp` , '%Y-%m-%d' )
我得到了
输出:
timestamp count(*)
-------------------------------------------------- -----------
2013-01-04 07:58:21 4
2013-01-05 09:28:56 38
2013-01-06 00:03:04 10
现在我需要的是,我需要得到按日期分组的计数的总和。也就是说,第二个日期应该是 42,第三个日期应该是 52。如何在查询中执行此操作?
【问题讨论】:
【参考方案1】:试一试:
SELECT `timestamp` , @sum:= ifnull(@sum, 0 ) + COUNT( * )
FROM `A`
WHERE `timestamp` >= '2013-01-04 07:12:12'
GROUP BY DATE_FORMAT( `timestamp` , '%Y-%m-%d' )
【讨论】:
【参考方案2】:试试:
SELECT
timestamp t ,
(select count(*) from A where timestamp <= t)
FROM A
GROUP BY timestamp
ORDER BY timestamp
【讨论】:
【参考方案3】:你能不能试试下面的SQL
SELECT DATE_FORMAT( ts_date , '%Y-%m-%d' ) as ts_dt_out, SUM(cnt)
FROM
(
SELECT `timestamp` ts_date , COUNT( * ) as cnt
FROM `A`
WHERE `timestamp` >= '2013-01-04 07:12:12'
GROUP BY DATE_FORMAT( `timestamp` , '%Y-%m-%d' )
)
as inner
WHERE ts_date >= '2013-01-04 07:12:12'
GROUP BY ts_dt_out
注意:未经测试,如果不起作用,请告诉我
【讨论】:
这可能适用于这种情况,但是如果会有更多行怎么办,如果再过 10 天,您的解决方案就像 Alwin 提到的那样限制为 3 天,我希望他需要动态查询作为解决方案【参考方案4】:这是一个简单的方法
SELECT
`timestamp` ,
COUNT( * )
FROM `A`
WHERE `timestamp` >= '2013-01-04 07:12:12'
GROUP BY DATE(`timestamp`)
【讨论】:
这只会给出计数。不是我要找的总和以上是关于与分组的总和计数[重复]的主要内容,如果未能解决你的问题,请参考以下文章