两张表,一张是client,保存的是用户信息。 一张是client_history, 记录了用户的播放时间,成功播放就一次就有一次的记录。这张表里就是起一个LOG的作用,所以有很多用户被删除了,但还是在这张表里有记录。所以现在需要以client表里的所有accountno,查出在client_history里的总播放时间。我现在是按着网上的写法,自己写了一个,但一直结果出不来,一直说在执行,看最后只好用手动给它关掉
SELECT A.accountno,sum(B.duration),B.clientversion FROM client as A, client_history as B
where A.accountno=B.accountno如果有可能,还希望可能显示成最近三个月里,分别在每一个月里的总播放时间.出来的效果像是账号,总播放时间,本月播放总计,上月播放总计, 上上个月播放总计
SELECT A.accountno,sum(B.duration),B.clientversion FROM client as A, client_history as B
where A.accountno=B.accountno如果有可能,还希望可能显示成最近三个月里,分别在每一个月里的总播放时间.出来的效果像是账号,总播放时间,本月播放总计,上月播放总计, 上上个月播放总计
理论上你可以用下面语句来实现,但你的表的记录太多,这个查询时间几乎是不可容忍的。所以一般是每月再生成一次统计结果。
SELECT A.accountno,
sum(B.duration),
sum(if(DATE_FORMAT(播放时间,'%Y%m')=DATE_FORMAT(curdate(),'%Y%m'), B.duration,0)) as 本月播放总计,
sum(if(DATE_FORMAT(播放时间,'%Y%m')=DATE_FORMAT(curdate()-interval 1 month,'%Y%m'), B.duration,0)) as 上月播放总计,
sum(if(DATE_FORMAT(播放时间,'%Y%m')=DATE_FORMAT(curdate()-interval 2 month,'%Y%m'), B.duration,0)) as 上上个月播放总计
FROM client as A, client_history as B
where A.accountno=B.accountno
group by A.accountno
client表里目前只有几千条。那还有没有其它办法来解决?