有一个表data。结构是: 三个年级里的所有的班级的学生给他的每科的任课老师打分的,每个学生一条记录
年级 班级 语文 数学 英语 科学 体育 电脑
1 01 12 13 30 26 30 32
1 01 12 13 30 26
。
1 02 23 13 30 32 30 32
1 02 12 15 30 23 30 32
2 01 12 15 30 23 24 35
3 05 25 45 24 35 64 17
3 08 24 54 64 17 45 24
下面这句是我以前写的每个科目只去掉最高和最低的一个分数
set rs1=rsuser("SELECT nianji,banji,(sum(语文)-max(语文)-min(语文))/(count(*)-2) ,(sum(数学)-max(数学)-min(数学))/(count(*)-2),(sum(英语)-max(英语)-min(英语))/(count(*)-2),(sum(科学)-max(科学)-min(科学))/(count(*)-2) from data group by 年级,班级")
现在的要求是把每个班级每个科目的学生打老师分数的前10%和后10%去掉,再算余下的各个科目的老师的平均得分(每个科目去掉最高和最低的一批记录后不会是同样的记录)所以我用了下面的语句,set rs2=rsuser("select avg(kemu) from (select * from data where id not in(select top 10 percent id from data where nianji & banji='101' order BY " & kemu & ",id) and id not in(select top 10 percent id from data where nianji & banji='" & bj & "' order BY " & kemu & " desc,id)) where nianji & banji='" & bj & "'")
kemu有14个是个变量要循环起来,每个科目都要执行上面的查询一次,总的班级有40来个,所以类似上面的查询要执行40*14次,页面就显示超时了, 高手们能否给我效率更高速度更快的查询吗,请写出具体的代码或者思路,表的结构是变不了了。 先谢谢了
年级 班级 语文 数学 英语 科学 体育 电脑
1 01 12 13 30 26 30 32
1 01 12 13 30 26
。
1 02 23 13 30 32 30 32
1 02 12 15 30 23 30 32
2 01 12 15 30 23 24 35
3 05 25 45 24 35 64 17
3 08 24 54 64 17 45 24
下面这句是我以前写的每个科目只去掉最高和最低的一个分数
set rs1=rsuser("SELECT nianji,banji,(sum(语文)-max(语文)-min(语文))/(count(*)-2) ,(sum(数学)-max(数学)-min(数学))/(count(*)-2),(sum(英语)-max(英语)-min(英语))/(count(*)-2),(sum(科学)-max(科学)-min(科学))/(count(*)-2) from data group by 年级,班级")
现在的要求是把每个班级每个科目的学生打老师分数的前10%和后10%去掉,再算余下的各个科目的老师的平均得分(每个科目去掉最高和最低的一批记录后不会是同样的记录)所以我用了下面的语句,set rs2=rsuser("select avg(kemu) from (select * from data where id not in(select top 10 percent id from data where nianji & banji='101' order BY " & kemu & ",id) and id not in(select top 10 percent id from data where nianji & banji='" & bj & "' order BY " & kemu & " desc,id)) where nianji & banji='" & bj & "'")
kemu有14个是个变量要循环起来,每个科目都要执行上面的查询一次,总的班级有40来个,所以类似上面的查询要执行40*14次,页面就显示超时了, 高手们能否给我效率更高速度更快的查询吗,请写出具体的代码或者思路,表的结构是变不了了。 先谢谢了
where id not in(select top 10 percent id from tb where banji=a.banji and
nianji=a.nianji order by kemu)
and id not in(select top 10 percent id from tb where banji=a.banji and
nianji=a.nianji order by kemu desc)