쿼리 질문입니다. 0 4 1,080

by 라슈 [SQL Query] [2012.10.08 11:24:52]


데이터 형식이
순번   값
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() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입