说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

请高手给个效率更好 速度更快的查询 谢谢了

编辑:说三道四文库 发布时间:2018-06-24 07:28
HTML文档下载 WORD文档下载 PDF文档下载
有一个表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次,页面就显示超时了, 高手们能否给我效率更高速度更快的查询吗,请写出具体的代码或者思路,表的结构是变不了了。 先谢谢了
该回复于2011-04-27 11:04:52被版主删除
建议直接使用你的程序来计算,而不是用SQL语句来实现。 你可以在VB语句中打开全表,然后逐一记录处理计算。

你可以一次把一个班的数据全部读入数组,然后进行10%的统计处理。
select avg(kemu) from tb
 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)
引用 2 楼 acmain_chm 的回复:
建议直接使用你的程序来计算,而不是用SQL语句来实现。 你可以在VB语句中打开全表,然后逐一记录处理计算。

你可以一次把一个班的数据全部读入数组,然后进行10%的统计处理。
看来只能用你的办法了, 不过这样写程序麻烦,想让自己轻松点 直接查询出结果,呵呵 看来不行
这句跟我的那句是不是差不多,也要查询好多次,我有14个科目
引用 3 楼 ssp2009 的回复:
SQL code
select avg(kemu) from tb
 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 ……
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘