两张表,一张是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如果有可能,还希望可能显示成最近三个月里,分别在每一个月里的总播放时间.出来的效果像是账号,总播放时间,本月播放总计,上月播放总计, 上上个月播放总计
解决方案 »
- 求助个位,mysql统计年度月销售
- 如何实现远程登陆
- mysql如何将数据倒入excel,或者将excel的数据倒入mysql
- Access denied for user '[email protected]'(using password yes)错误
- 学习MYSQL有什么入门经典书籍
- postgresql连接错误!
- >>load data local infile....4.0.15MYSQL 支持吗?<<
- 求大神指点
- mysql 结构不同多表查询,请教语句
- 麻烦问一下数据库数据转移的问题,sql server转到mysql
- 求助,查询多表里查询相同字段的相同内容
- 请问mysql中类似MsSql中grouping功能的函数?
理论上你可以用下面语句来实现,但你的表的记录太多,这个查询时间几乎是不可容忍的。所以一般是每月再生成一次统计结果。
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表里目前只有几千条。那还有没有其它办法来解决?