2013-01-31 16 views
1

可能重复:
Calculate a running total in MySQL数与组和由

我需要它为每个dates.Now的分组数之我正在以下查询和获取了放如下:

SELECT `timestamp` , COUNT(*) 
FROM `A` 
WHERE `timestamp` >= '2013-01-04 07:12:12' 
GROUP BY DATE_FORMAT(`timestamp` , '%Y-%m-%d') 

和我得到

OUTPUT:

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.我如何在查询中做到这一点?

回答

0

你可以试试下面的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 

注:未测试让我知道,如果它不工作

+0

这可能适用于这种情况,但如果行数更多,如果再过10天,如果Alwin提到的解决方案限制为3天,我希望他需要动态查询一个解决方案 – hsuk

0

试试看:

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') 
0

尝试:

SELECT 
    timestamp t , 
    (select count(*) from A where timestamp <= t) 
FROM A 
GROUP BY timestamp 
ORDER BY timestamp 
0

这里是一个简单的方法

SELECT 
    `timestamp` , 
    COUNT(*) 
FROM `A` 
WHERE `timestamp` >= '2013-01-04 07:12:12' 
GROUP BY DATE(`timestamp`) 
+0

这只会给count.Not我找的总和 –