自动做题

  1 /*
  2 *自动做题
  3 *
  4 */
  5 --实际成绩
  6 select  cj.KSBH, cj.KSLB, fs,200-cj.FS*2 kf from (
  7 select  KSBH, KSLB, FS from (
  8 select  double (substr(clh,POSSTR(clh,':')+1,POSSTR(clh,';')-POSSTR(clh,':')-1)) fs,clh, b.RYSQID, b.KSBH, b.XM, b.KSLBBH, b.KSLB, b.BY09, b.KSCJ 
  9 from (
 10 select  substr(BY09, WZ,length(BY09)-wz+1) clh,a.RYSQID, a.KSBH, a.XM, a.KSLBBH, a.KSLB, a.BY09, a.KSCJ
 11 from (
 12 select ksxx.RYSQID,ksxx.KSBH , ksxx.XM, ksxx.KSLBBH, kslb.KSLBBH kslb ,case when RIGHT(by09,1)<>';' then by09||';' else by09 end by09, ksxx.KSCJ , LOCATE (kslb.KSLBBH,by09) wz
 13 from KS_KSXX ksxx
 14 left join KS_KSLB kslb on LOCATE (kslb.KSLBBH, ksxx.kslbbh)  >0 and kslb.KSLBBH<>'404'
 15 where ksxx.KSBPBH>'330416081' and  ksxx.KSBPBH like '3304%' and ksxx.REMOVED='0' 
 16 and  ksxx.KSCJ is not null and  kslb.KSLBBH like '%40%'
 17 and ksxx.BY09 is not null
 18 )a
 19 )b
 20 )c
 21 union all
 22 select ksxx.KSBH , kslb.KSLBBH kslb ,double(ksxx.KSCJ) fs
 23 from KS_KSXX ksxx
 24 left join KS_KSLB kslb on LOCATE (kslb.KSLBBH, ksxx.kslbbh)  >0 and kslb.KSLBBH<>'404'
 25 where ksxx.KSBPBH>'330416081' and  ksxx.KSBPBH like '3304%' and ksxx.REMOVED='0'
 26 and kslb.KSLBBH not like '4%'
 27 ) cj;
 28 --试题规则
 29     select  STLBBH, sum(TS) ts, MTFS, KSLBBH 
 30     from KS_STGZ 
 31     where KSLBBH='501'
 32     group by STLBBH, MTFS, KSLBBH;
 33 --试题规则    
 34     select   kslb.KSLBBH ,   gz1.TS ts1, gz1.MTFS fs1 , gz2.TS ts2, gz2.MTFS fs2, gz3.TS ts3, gz3.MTFS fs3
 35     from KS_KSLB kslb 
 36     left join  (select  STLBBH, sum(TS) ts, MTFS, KSLBBH from KS_STGZ group by STLBBH, MTFS, KSLBBH) gz1 
 37     on  gz1.STLBBH='102201'  and kslb.KSLBBH = gz1.KSLBBH
 38     left join  (select  STLBBH, sum(TS) ts, MTFS, KSLBBH from KS_STGZ group by STLBBH, MTFS, KSLBBH)gz2 
 39     on  gz2.STLBBH='102202'  and kslb.KSLBBH = gz2.KSLBBH
 40     left join  (select  STLBBH, sum(TS) ts, MTFS, KSLBBH from KS_STGZ group by STLBBH, MTFS, KSLBBH)gz3 
 41     on  gz3.STLBBH='102203'  and kslb.KSLBBH = gz3.KSLBBH
 42    ;
 43     --where kslb.KSLBBH  in ('101','102','201','202','301','302','303','304','305','306','307','308','309','310')
 44 --人分数和试题的直接关系;
 45 select  cj.KSBH, cj.KSLB, fs,200-cj.FS*2 kf, gz.TS1, gz.FS1, gz.TS2, gz.FS2, gz.TS3, gz.FS3 from (
 46 select  KSBH, KSLB, FS from (
 47 select  double (substr(clh,POSSTR(clh,':')+1,POSSTR(clh,';')-POSSTR(clh,':')-1)) fs,clh, b.RYSQID, b.KSBH, b.XM, b.KSLBBH, b.KSLB, b.BY09, b.KSCJ 
 48 from (
 49 select  substr(BY09, WZ,length(BY09)-wz+1) clh,a.RYSQID, a.KSBH, a.XM, a.KSLBBH, a.KSLB, a.BY09, a.KSCJ
 50 from (
 51 select ksxx.RYSQID,ksxx.KSBH , ksxx.XM, ksxx.KSLBBH, kslb.KSLBBH kslb ,case when RIGHT(by09,1)<>';' then by09||';' else by09 end by09, ksxx.KSCJ , LOCATE (kslb.KSLBBH,by09) wz
 52 from KS_KSXX ksxx
 53 left join KS_KSLB kslb on LOCATE (kslb.KSLBBH, ksxx.kslbbh)  >0 and kslb.KSLBBH<>'404'
 54 where ksxx.KSBPBH>'330416081' and  ksxx.KSBPBH like '3304%' and ksxx.REMOVED='0' 
 55 and  ksxx.KSCJ is not null and  kslb.KSLBBH like '%40%'
 56 and ksxx.BY09 is not null
 57 )a
 58 )b
 59 )c
 60 union all
 61 select ksxx.KSBH , kslb.KSLBBH kslb ,double(ksxx.KSCJ) fs
 62 from KS_KSXX ksxx
 63 left join KS_KSLB kslb on LOCATE (kslb.KSLBBH, ksxx.kslbbh)  >0 and kslb.KSLBBH<>'404'
 64 where ksxx.KSBPBH>'330416081' and  ksxx.KSBPBH like '3304%' and ksxx.REMOVED='0'
 65 and kslb.KSLBBH not like '4%'
 66 ) cj
 67 left join 
 68 (
 69     select   kslb.KSLBBH ,   gz1.TS ts1, gz1.MTFS fs1 , gz2.TS ts2, gz2.MTFS fs2, gz3.TS ts3, gz3.MTFS fs3
 70     from KS_KSLB kslb 
 71     left join  (select  STLBBH, sum(TS) ts, MTFS, KSLBBH from KS_STGZ group by STLBBH, MTFS, KSLBBH) gz1 
 72     on  gz1.STLBBH='102201'  and kslb.KSLBBH = gz1.KSLBBH
 73     left join  (select  STLBBH, sum(TS) ts, MTFS, KSLBBH from KS_STGZ group by STLBBH, MTFS, KSLBBH)gz2 
 74     on  gz2.STLBBH='102202'  and kslb.KSLBBH = gz2.KSLBBH
 75     left join  (select  STLBBH, sum(TS) ts, MTFS, KSLBBH from KS_STGZ group by STLBBH, MTFS, KSLBBH)gz3 
 76     on  gz3.STLBBH='102203'  and kslb.KSLBBH = gz3.KSLBBH
 77 ) gz on  cj.KSLB=gz.KSLBBH;
 78 --吧关系存入中间表
 79 insert into ZDZT(KSBH, KSLB, FS, KF, TS1, FS1, TS2, FS2, TS3, FS3 )
 80 select  cj.KSBH, cj.KSLB, fs,200-cj.FS*2 kf, gz.TS1, gz.FS1, gz.TS2, gz.FS2, gz.TS3, gz.FS3 from (
 81 select  KSBH, KSLB, FS from (
 82 select  double (substr(clh,POSSTR(clh,':')+1,POSSTR(clh,';')-POSSTR(clh,':')-1)) fs,clh, b.RYSQID, b.KSBH, b.XM, b.KSLBBH, b.KSLB, b.BY09, b.KSCJ 
 83 from (
 84 select  substr(BY09, WZ,length(BY09)-wz+1) clh,a.RYSQID, a.KSBH, a.XM, a.KSLBBH, a.KSLB, a.BY09, a.KSCJ
 85 from (
 86 select ksxx.RYSQID,ksxx.KSBH , ksxx.XM, ksxx.KSLBBH, kslb.KSLBBH kslb ,case when RIGHT(by09,1)<>';' then by09||';' else by09 end by09, ksxx.KSCJ , LOCATE (kslb.KSLBBH,by09) wz
 87 from KS_KSXX ksxx
 88 left join KS_KSLB kslb on LOCATE (kslb.KSLBBH, ksxx.kslbbh)  >0 and kslb.KSLBBH<>'404'
 89 where ksxx.KSBPBH>'330416081' and  ksxx.KSBPBH like '3304%' and ksxx.REMOVED='0' 
 90 and  ksxx.KSCJ is not null and  kslb.KSLBBH like '%40%'
 91 and ksxx.BY09 is not null
 92 )a
 93 )b
 94 )c
 95 union all
 96 select ksxx.KSBH , kslb.KSLBBH kslb ,double(ksxx.KSCJ) fs
 97 from KS_KSXX ksxx
 98 left join KS_KSLB kslb on LOCATE (kslb.KSLBBH, ksxx.kslbbh)  >0 and kslb.KSLBBH<>'404'
 99 where ksxx.KSBPBH>'330416081' and  ksxx.KSBPBH like '3304%' and ksxx.REMOVED='0'
100 and kslb.KSLBBH not like '4%'
101 ) cj
102 left join 
103 (
104     select   kslb.KSLBBH ,   gz1.TS ts1, gz1.MTFS fs1 , gz2.TS ts2, gz2.MTFS fs2, gz3.TS ts3, gz3.MTFS fs3
105     from KS_KSLB kslb 
106     left join  (select  STLBBH, sum(TS) ts, MTFS, KSLBBH from KS_STGZ group by STLBBH, MTFS, KSLBBH) gz1 
107     on  gz1.STLBBH='102201'  and kslb.KSLBBH = gz1.KSLBBH
108     left join  (select  STLBBH, sum(TS) ts, MTFS, KSLBBH from KS_STGZ group by STLBBH, MTFS, KSLBBH)gz2 
109     on  gz2.STLBBH='102202'  and kslb.KSLBBH = gz2.KSLBBH
110     left join  (select  STLBBH, sum(TS) ts, MTFS, KSLBBH from KS_STGZ group by STLBBH, MTFS, KSLBBH)gz3 
111     on  gz3.STLBBH='102203'  and kslb.KSLBBH = gz3.KSLBBH
112 ) gz on  cj.KSLB=gz.KSLBBH;
113 
114 ----
115 select  a3.FALG, a3.KSBH, a3.KSLB, a3.FS, a3.KF, a3.TS1, a3.FS1, a3.TS2, a3.FS2, a3.TS3, a3.FS3
116 ,case when FALG is null then(case when c3*fs3+c2*fs2=kf then 0 when MOD (kf-c3*fs3+c2*fs2, fs1)=0 then (kf-c3*fs3+c2*fs2)/fs1 end)
117 else a3.c1 end as c1
118 , a3.C2, a3.C3 
119 from (
120 select  a2.FALG, a2.KSBH, a2.KSLB, a2.FS, a2.KF, a2.TS1, a2.FS1, a2.TS2, a2.FS2, a2.TS3, a2.FS3
121 , a2.C1
122 ,case when FALG is null then (case when kf-TS3*c3<fs2 then 0  
123                                    when kf-ts3*c3-ts2*c2>0 then ts2 
124                                    else  (kf-ts3*c3)/fs2 
125                               end)
126 else a2.c2 end c2
127 ,a2.C3 
128 from 
129 (
130 select  a1.FALG, a1.KSBH, a1.KSLB, a1.FS, a1.KF, a1.TS1, a1.FS1, a1.TS2, a1.FS2, a1.TS3, a1.FS3
131 ,case when FALG=1 then  a1.C1 when falg =2 then (kf-(c2*fs2))/fs1 when falg=1 then C1 end  c1
132 ,case when FALG =2  then c2 when falg =1 then 0  end c2
133 ,case when FALG is null  then(case when  FS3*ts3< kf then TS3 else kf/fs3 end) else 0 end c3
134 from 
135 (
136 select  case when FALG is null and mod((kf-c2*fs2),fs1)=0 and (kf-c2*fs2)<fs1*ts1 then 2 when falg is not null then falg end falg
137 , KSBH, KSLB, fs, KF, TS1, FS1, ts2,fs2,ts3,fs3,case when falg=1 then 0 else c2 end c2,case when falg=1 then a.KF/fs1 end c1
138 from (
139     select  case when  TS1*fs1>=kf and mod(KF, FS1 )=0   then  1 end falg,case when fs2*ts2>kf then kf/fs2 else ts2 end  c2
140     ,KSBH, KSLB, fs, KF, TS1, FS1, ts2,fs2,ts3,fs3
141     from ZDZT 
142 )a
143 )a1
144 )a2
145 )a3
原文地址:https://www.cnblogs.com/Anguo/p/7246243.html