数据:(基表:jibiao)
用户名,月份,访问次数
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 A,2015-03,16 A,2015-03,22 B,2015-03,23 B,2015-03,10 B,2015-03,1
需求:求单月访问次数和总访问次数
访客 月份 月访问总计 累计访问总计 A 2015-01 33 33 A 2015-02 10 43 ……. ……. ……. ……. B 2015-01 30 30 B 2015-02 15 45 ……. ……. ……. …….
实现需求的步骤:
1,先做一个表A。属性为name,month,sum(num)。插入基表的name和mon分组数据。
create table A (name string,mon string, sum string) ;
insert into table A select name as name,mon as mon,sum(count) as sum from jibiao j group by j.name,j.mon;
2,做一个视图,把和表A相同的表B和表A内关联。
create view AandB as select a.name aname, a.mon amon, a.sum asum, b.name bname, b.mon bmon, b.sum bsum from A a join A b on a.name=b.name;
3,视图AandB中amon>=bmon 时,通过对bsum的操作来进行月份的累加效果来查找累计访问总计。
select aname amon asum sum(bsum) as monsum from AandB where amon>=bmon group by aname,amon,asum order by aname,amon;