需求:
有如下访客访问次数统计表 t_access_times
访客 |
月份 |
访问次数 |
A |
2015-01 |
5 |
A |
2015-01 |
15 |
B |
2015-01 |
5 |
A |
2015-01 |
8 |
B |
2015-01 |
25 |
A |
2015-01 |
5 |
A |
2015-02 |
4 |
A |
2015-02 |
6 |
B |
2015-02 |
10 |
B |
2015-02 |
5 |
…… |
…… |
…… |
需要输出报表:t_access_times_accumulate
访客 |
月份 |
月访问总计 |
累计访问总计 |
A |
2015-01 |
33 |
33 |
A |
2015-02 |
10 |
43 |
……. |
……. |
……. |
……. |
B |
2015-01 |
30 |
30 |
B |
2015-02 |
15 |
45 |
……. |
……. |
……. |
……. |
实现:
select a.name,a.time,max(a.num),sum(b.num) from (select name,time,sum(accessnum) num from t_access_times group by name,time) a join (select name,time,sum(accessnum) num from t_access_times group
by name,time) b on a.name=b.name where b.time<=a.time group by a.name,a.time order by a.name,a.time;
结果:
+---------+----------+------+------+--+
| a.name | a.time | _c2 | _c3 |
+---------+----------+------+------+--+
| A | 2015-01 | 33 | 33 |
| A | 2015-02 | 10 | 43 |
| B | 2015-01 | 30 | 30 |
| B | 2015-02 | 15 | 45 |
+---------+----------+------+------+--+
缺点:计算慢,非常的慢