연속되는 같은 값의 갯수를 알고 싶습니다. 0 4 9,088

by 손님 [SQL Query] 연속값 기간 ROW_NUMBER [2012.05.03 13:05:11]



안녕하세요..

한가지 궁금한 쿼리가 있어서 글을 남김니다.


날짜 2001.01  금액 0원
날짜 2001.02  금액 0원
날짜 2001.03  금액 1원
날짜 2001.04  금액 0원
날짜 2001.05  금액 0원
날짜 2001.06  금액 0원

위와 같은 같이 존재할때..
연속되는 같은 값의 갯수를 알고 싶습니다.

<결과>
0원 2개 / 1원 1개 / 0원 3개라는 결과를 얻고 싶은데

어떻게 쿼리를 작성하면될까요??


by 마농 [2012.05.03 13:32:27]
WITH t AS
(
SELECT '2001.01' dt, 0 amt FROM dual
UNION ALL SELECT '2001.02', 0 FROM dual
UNION ALL SELECT '2001.03', 1 FROM dual
UNION ALL SELECT '2001.04', 0 FROM dual
UNION ALL SELECT '2001.05', 0 FROM dual
UNION ALL SELECT '2001.06', 0 FROM dual
)
SELECT MIN(dt) sdt
     , MAX(dt) edt
     , amt
     , COUNT(*) cnt
  FROM (SELECT dt, amt
             , ROW_NUMBER() OVER(ORDER BY dt) rn1
             , ROW_NUMBER() OVER(PARTITION BY amt ORDER BY dt) rn2
          FROM t
        )
 GROUP BY rn1 - rn2, amt
 ORDER BY sdt
;

by 손님 [2012.05.03 13:47:36]

마농님..진심으로 감사합니다.

by 김용한 [2012.05.03 14:17:32]

예전에 마농님의 비슷한쿼리를 본거같은데 다시 되새김질하게돼네요 감사합니다 ~

by 손님 [2012.05.03 16:33:33]

음... 많이 보던 스타일의 쿼리군요.
쏘...

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