어떻게 작성하다 보니 오라클 관련으로 글이 참 많아 진다.

오늘은 ROW_NUMBER() 에 관하여 작성해 본다.

이게 참 유용하게 쓰인다.

물론 순서를 사용하기 위해서는 rownum을 많이 사용하기는 한다.

하지만 order by의 취양점이 있다.

예를 들어

SELECT rownum , aaa,bbb FROM table 이라고 해서 나온값과

SELECT rownum , aaa,bbb FROM table ORDER BY aaa 해서 나온값이 다르다.

또한 rownum을 순서로 이용하려면.
SELECT rownum , aaa,bbb
FROM (SELECT aaa,bbb
           FROM table ORDER BY aaa
)
이렇게 써야 원하는 결과를 얻을 수 있다.


이해 반해 ROW_NUMBER() 조건 절을 두어 그 안에서의 순서를 보여줄 수 있다
즉 각각의 데이터에 순서를 붙이기 위해서 유용하게 사용된다.

SELECT aaa, bbb, ROW_NUMBER() OVER (PARTITION BY aaa ORDER BY bbb) as ccc
FROM table

이렇게 작성 하면 aaa 그룹별로 bbb의 순서에 따라서 순서값을 얻을 수 있다.

결과값
aaa             bbb           ccc
--------      --------     --------
10               a                1
10               b                2
10               c                3
20               a                1
20               c                2
20               d                3
20               e                4
20               f                 5
30               a                1
30               d                2
블로그 이미지

요다할아범

,