위 수험결과 테이블에서 90점 이상인 과목을 고득점 결과에 삽입하라.
과목 코드 국어 01, 수학 02, 영어 03
insert into 고득점 결과
select * from
(
select 수험일자, 수험번호,
case when lv = 1 then '01'
when lv = 2 then '02'
when lv = 3 then '03' END 과목코드,
case when lv = 1 AND 국어 >= 90 then (국어)
when lv = 2 AND 수학 >= 90 then (수학)
when lv = 3 AND 영어 >= 90 then (영어) END 점수
from 수험결과, (select level lv from dual connect by level <= 3)
where (국어 >= 90 or 수학 >= 90 or 영어 >= 90)
)
where 점수 is not null;
위 수험결과 테이블에서 '20140617' 일자의 시험결과를 성적집계에 Insert 하시오
insert into 성적집계
select 수험일자, ROUND(avg(국어)) 국어평균,
ROUND(avg(수학)) 수학평균,
ROUND(avg(영어)) 영어평균,
ROUND(avg(총점) , 2) 총점평균,
MAX(최고 총점) 최고총점,
count(case when 최고총점 = 총점 THEN 1 END) 최고총점학생수
from (
select A.*, 국어+수학+영어 총점,
First_Value(국어+수학+영어) over(order by (국어+영어+수학) DESC) 최고총점
from 수험결과 A
where 수험일자 = '20140617'
)
group by 수험일자;
create index idx_b001 on b(type, cls)
create index idx_c001 on c(no)
create index idx_d001 on d(cls, type, order_dt)
select /*+ index(c idx_c001)*/ a.*, c.*
from( select /*+leading(b d) index(b idx_b001) index(d idx_d001)*/ b.*
from b16 b
where b.type = 'zz123'
and exists ( /*+ unnest nl_sj */ select 'x'
from d16 d
where d.cls = b.cls
and d.type = 'df100'
and d.order_dt is null ) a, c16 c
where a.no = c.no;