하위 75%평균값 통계 작성을 위해 ntile을 사용하고자 합니다.. 1 1 2,801

by 쌀소년 ntile 통계 [2014.04.30 09:19:16]


안녕하세요... 

올해 입학 학생의 최대점수, 최소점수, 평균값, 표준편차, 하위 75% 평균점수를 추출하는 쿼리를 짜려고 합니다.

ntile을 이용하여 데이터 값을 4분위를 낸 후 제일 1번타일을 제외한 나머지 3개타일의 평균을 내면 될거 같아서 해당 쿼리를 짜는데요.. 계속 막히고 있습니다...

팁좀 부탁드려도 될지요..

 

select cd1.cdfnm 모집구분, cd2.cdfnm 전형구분, cd3.cdfnm 지원구분,  mj.DAEHAKNM 대학명, mj.MOJIPNM 모집단위,
    round(max(sh.hsgrade) over (partition by ws.MOJIPGBN, ws.jungbn, ws.JIWONGBN, ws.MOJIPCD ORDER by ws.MOJIPGBN, ws.jungbn, ws.JIWONGBN, ws.MOJIPCD),2) 교과_최고,
    round(min(sh.hsgrade) over (partition by ws.MOJIPGBN, ws.jungbn, ws.JIWONGBN, ws.MOJIPCD ORDER by ws.MOJIPGBN, ws.jungbn, ws.JIWONGBN, ws.MOJIPCD),2) 교과_최저,
    round(avg(sh.hsgrade) over (partition by ws.MOJIPGBN, ws.jungbn, ws.JIWONGBN, ws.MOJIPCD ORDER by ws.MOJIPGBN, ws.jungbn, ws.JIWONGBN, ws.MOJIPCD),2) 교과_평균,
    round(stddev(sh.hsgrade) over (partition by ws.MOJIPGBN, ws.jungbn, ws.JIWONGBN, ws.MOJIPCD ORDER by ws.MOJIPGBN, ws.jungbn, ws.JIWONGBN, ws.MOJIPCD),2) 교과_표준편차,
    ntile(4) over (partition by ws.MOJIPGBN, ws.jungbn, ws.JIWONGBN, ws.MOJIPCD ORDER by ws.MOJIPGBN, ws.jungbn, ws.JIWONGBN, ws.MOJIPCD) 교과4단계,
    decode(ntile(4) over (partition by ws.MOJIPGBN, ws.jungbn, ws.JIWONGBN, ws.MOJIPCD ORDER by ws.MOJIPGBN, ws.jungbn, ws.JIWONGBN, ws.MOJIPCD) ,1,'N', 'Y') 교과1단계제외
     --1단계를 제외한것만 Y로 표시

from isuhumtb sh, iwonseom ws, igccodem cd1, igccodem cd2, igccodem cd3, igcmojpm mj
where sh.SUHUMNO=ws.SUHUMNO
    AND sh.HAPGYK='11'
    and ws.MOJIPGBN=cd1.Code(+)
    and ws.jungbn=cd2.Code(+)
    and ws.jiwongbn=cd3.Code(+)
    and ws.MOJIPCD=mj.MOJIPCD(+)
ORDER by ws.MOJIPGBN, ws.jungbn, ws.JIWONGBN, ws.MOJIPCD

 

 

by 마농 [2014.04.30 11:29:27]

분석함수 사용시 Partition By 와 Order By 의 기준이 모호한것 같네요.

지금 양쪽이 서로 같은 컬럼으로 하는데 이렇게 하는게 아닙니다.

Partition By 는 대상집합을 구별하는 역할을 하구요

Order By 는 구별된 집합 안에서의 정렬기준입니다.

Partition By 에서는 집합의 기준이 맞는지 확인하시고

Order By 에서는 Partition By 의 기준항목을 제외하고 실제 정렬할 항목(점수)만 넣으세요.

Ntile 을 제외한 다른 값들은 정렬이 필요한 구문이 아닙니다.

Order By 구문 빼고 Partition By 만 써야 하구요.

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입