점수대별 인원 조회 쿼리문의 0 3 3,024

by 윤영재 [SQL Query] CONNECT BY LEVEL 데이터분류 [2011.10.07 16:40:46]



2점 단위로 100점에서 0점까지 점수대별 인원을 조회하려고 하는데요..질답을 검색하여 DECODE문을 찾아 써보려고 하니 너무 길어져서 혹시 다른 방법이 있는지 여쭤봅니다.

데이터 구성
점수 이름
82 홍길동
79 길순이
77 영구
74 땡칠
73 바보


도출하고자 하는 결과값은 아래와 같습니다.
점수대 인 원 누 계
100 1 1
~ 98 4 5
~ 96 0 5
~ 94 2 7
~ 92 4 11
~ 90 0 11
by 채용근 [2011.10.07 17:21:07]
select b.jum, count(name), sum ( count(name) ) over (order by b.jum desc)
from t# a
, ( select level * 2 jum from dual connect by level <= 50 ) b
where a.jum(+) between b.jum and b.jum + 1
group by b.jum

by 마농 [2011.10.07 17:26:44]
WITH t AS
(
SELECT 82 sc, '홍길동' nm FROM dual
UNION ALL SELECT 79, '길순이' FROM dual
UNION ALL SELECT 77, '영구' FROM dual
UNION ALL SELECT 74, '땡칠' FROM dual
UNION ALL SELECT 73, '바보' FROM dual
)
SELECT c.sc
, COUNT(a.nm) cnt
, SUM(COUNT(a.nm)) OVER(ORDER BY c.sc DESC) sum_cnt
FROM t a
, (SELECT LEVEL * 2 - 2 sc FROM dual CONNECT BY LEVEL <= 51) c
WHERE FLOOR(a.sc(+) / 2) * 2 = c.sc
GROUP BY c.sc
;

by 윤영재 [2011.10.07 18:29:15]
wow! 감사합니다. 고수님들의 가르침으로 잘 해결되었습니다. 행복한 주말 보내시게 될겁니다~ ^^
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입