데이터 형식이 순번 값 1 A 2 A 3 A 4 A 5 B 6 B 7 B 8 C 9 B 10 B 11 A . . . 이런식일때
값 갯수 A 4 B 3 C 1 B 2 A 1
위처럼 정리 하고 싶습니다. 쿼리로 가능 할까요??
답변 부탁드립니다.
by 아발란체
[2012.10.08 11:45:02]
WITH T AS ( SELECT 1 AS no, 'A' AS val FROM DUAL UNION ALL SELECT 2, 'A' FROM DUAL UNION ALL SELECT 3, 'C' FROM DUAL ) SELECT val, COUNT(no) AS cnt FROM T GROUP BY val
채택을 해주시면 감사하겠습니당 ==3
by 마농
[2012.10.08 12:32:14]
SELECT val
, COUNT(*) cnt
FROM (SELECT no, val
, ROW_NUMBER() OVER(ORDER BY no) rn1
, ROW_NUMBER() OVER(PARTITION BY val ORDER BY no) rn2
FROM t
)
GROUP BY rn1-rn2, val
ORDER BY MIN(no)
;
by 아발란체
[2012.10.08 13:26:32]
억 너무 쉽게 봤다... 마농님이 올려주신 것처럼 그룹별 랭킹 구하서 결과를 얻는 방법 많이 쓰입니다. 여기서 포인트는 PARTITION BY..!!
by 라슈
[2012.10.08 13:48:38]
두분다 답변 감사합니다. 많은 공부가 되었습니다.
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.