안녕하세요! ROW_NUMBER() 질문드립니다 0 2 4,813

by 구루유니 [2024.02.02 15:24:57]


WITH TEMP AS (

SELECT 20240202 AS DTTM,

          'PK1' AS MNGNO,

          '7777' AS OCD,

          'I' AS DIV_CD

FROM DUAL

UNION ALL

SELECT 20240202 AS DTTM,

          'PK1' AS MNGNO,

          '7777' AS OCD,

          'O' AS DIV_CD

FROM DUAL )

 

SELECT DTTM,

          MNGNO,

          OCD,

          DIV_CD,

          RK

FROM(

    SELECT DTTM,

              MNGNO,

              OCD,

              DIV_CD,

              ROW_NUMBER() OVER(PARTITION BY OCD,MNGNO ORDER BY DTTM) AS RK

FROM TEMP

)

 

이렇게 할시 

RK가 1인 DIV_CD 는 O,

2인 DIV_CD는 I로 출력되는데

조건으로 WHERE RK = 1 로 조회하면 DIV_CD 는 I 로 출력이 됩니다.

해당 부분은 어떤 이유때문에 이렇게 출력되는지 궁금합니다. 답변 주시면 감사드리겠습니다

by 구루유니 [2024.02.02 16:48:02]

인라인뷰에 분석함수값을 필터로 걸면 소트가 다른 소트로 먹여지네요. 실행 계획 돌려보다가 확인했습니다. 감사합니다


by 마농 [2024.02.02 19:54:58]

정렬기준이 유니크하지 않기 때문에 1등이 누가 될지 장담할 수 없습니다.

항상 일정한 반환값을 원한다면 정렬기준이 유일해야 합니다.

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