어떻게 작성하다 보니 오라클 관련으로 글이 참 많아 진다.
오늘은 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
오늘은 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