作者squirre1 (squirre1)
看板Database
标题[MySQL] 在一查询中如何把subquery的结果重复使用
时间Fri Sep 11 06:02:33 2009
成绩 分组编号
id name grade groupid
============================
1 小明 70 1
2 大明 80 1
3 .... 90 2
4 .... 100 2
5 .... 10 2
6 .... 70 3
7 .... 60 4
我想找出 每组成绩>=60的人 占 所有成绩>=60的人 的比例
也就是想长这样:
groupid 每组>=60的人数 所有>=60的人数 比例
================================================
1 2 6 0.333
2 2 6 0.333
3 1 6 0.166
4 1 6 0.166
groupid 及 比例 就是我要的结果
我想到的方法是
select groupid, count(*)/(select count(*) from table where grade>=60)
from table where grade>=60 group by groupid
可是问题是我的资料表里面有数十万笔资料
因此做select...where的速度会很慢
有没有办法让我可以只做一次select...where就算出结果?
例如我可以先算出这个表
select groupid, count(*) from table where grade>=60 group by groupid
groupid count(*)
================
1 2
2 2
3 1
4 1
然後再重复使用这个表(而不用重新从整个表里做select...where)算出比例吗?
谢谢
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.112.249.103
1F:推 JoeHorn:开 View,或是用 temp table,可是速度上应该没啥差.. 09/11 14:39