+ -
当前位置:首页 → 问答吧 → 求一个sql语句(800万条记录)

求一个sql语句(800万条记录)

时间:2011-09-27

来源:互联网


table表结构如下
itemid userid view
1 2 230
2 2 1050
2 3 12304
5 3 102

我想计算,每一个userid的对应的view大于1000的比例

就是说用户的文章itemid被看的次数大于1000的个数/用户(userid)总的文章数(itemid个数)。

数据库有800万条记录。

作者: miraclestar   发布时间: 2011-09-27

select (select count(distinct userid) from tb where view>1000 )/count(distinct itemid)
from tb

作者: rucypli   发布时间: 2011-09-27

我意思是对每一个用户做统计

作者: miraclestar   发布时间: 2011-09-27


1、SELECT COUNT(*) FROM testcase WHERE VIEW>1000 GROUP BY userid 

2、SELECT COUNT(*) FROM testcase GROUP BY userid

其实就是根据userid对应起来,用1/2

作者: miraclestar   发布时间: 2011-09-27

SQL code
SELECT userid,(SUM(IF(`view`>1000,1,0)) / COUNT(itemid)) percent
FROM testcase GROUP BY userid

作者: s11ss   发布时间: 2011-09-27

SELECT userid,concat(SUM(IF(`view`>1000,1,0)) / COUNT(*),'%') 
FROM tt GROUP BY userid

作者: wwwwb   发布时间: 2011-09-27

由于你的记录比较多,考虑查询效率的情况下,可以使用如下语句。

SQL code
select userid ,(select count(*) from table表结构如下 where userid=a.userid and `view`>1000) / count(*)
from table表结构如下 a
group by userid



创建索引 create index xxx on table表结构如下 (userid, view)

作者: ACMAIN_CHM   发布时间: 2011-09-27

相关阅读 更多

热门下载

更多