ITPub博客

首页 > IT职业 > IT生活 > 求学生在某几道题上的答题正确率

求学生在某几道题上的答题正确率

原创 IT生活 作者:lastwinner 时间:2005-11-26 16:55:04 0 删除 编辑

已有试卷正确答案(如:abbaddccbaba……)和学生答案(如:abbabbaa……)以及某几道题号如(1,2,5,7,10……)的条件下求学生在这几道题上的正确率

参见:http://www.itpub.net/355415,2.html

[@more@]r为正确答案,s为学生答案,th为题号,需用逗号分开
代码:

SQL
> var r varchar2(10); SQL> exec :r :='abcdabcd';
PL/SQL 过程已成功完成。

已用时间
: 00: 00: 00.30
SQL
> var s varchar2(10); SQL> exec :s :='aabbccdd';
PL/SQL 过程已成功完成。

已用时间
: 00: 00: 00.20
SQL
> var th varchar2(10); SQL> exec :th :='1,4,6';
PL/SQL 过程已成功完成。

已用时间
: 00: 00: 00.20

取得题号列表
SQL
> select to_number(substr(:th,st+1,en-st-1)) th from (select decode(rn,1,0,in
str
(:th,',',1,rn-1)) st ,decode(instr(:th,',',1,rn),0,length(:th)+1, instr(:th,'
,'
,1,rn)) en from (select rownum rn from dual connect by rownum<=length(:th)-len
gth
(replace(:th,',',''))+1));

TH ----------
1
4
6

获得总题数和正确率
SQL
> select count(*) zts, sum(case when substr(:r,th,1)=substr(:s,th,1) then 1 e
lse 0 end
)/count(*) zql from (select to_number(substr(:th,st+1,en-st-1)) th from
(select decode(rn,1,0,instr(:th,',',1,rn-1)) st ,decode(instr(:th,',',1,rn),0,l
ength
(:th)+1, instr(:th,',',1,rn)) en from (select rownum rn from dual connect b
y rownum
<=length(:th)-length(replace(:th,',',''))+1)));

ZTS ZQL ---------- ----------
3 .333333333


SQL
> exec :th :='1,2,7,4,6';
PL/SQL 过程已成功完成。

已用时间
: 00: 00: 00.20
SQL
> /

ZTS ZQL ---------- ----------
5 .2

SQL
> exec :th :='1,2,7,5';
PL/SQL 过程已成功完成。

已用时间
: 00: 00: 00.30
SQL
> /

ZTS ZQL ---------- ----------
4 .25 .......................................................

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/29867/viewspace-810748/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2007-12-12

  • 博文量
    223
  • 访问量
    2812693