분석함수 질문입니다. 0 4 3,025

by 손님 분석함수 [2008.12.06 12:09:16]


안녕하세요.

분석함수에서

ROW_NUMBER() OVER(PARTITION BY a)  에서 ORDER by를 쓰지 않으면 에러가 나는데 꼭써야하나요?

그냥 a에대해서만 그룹화하고 order by는 필요없는데 지금은 그룹화한 a에대해서 다시 order by를 하고있습니다.

좋은주말 되시길 바랍니다.

by madcat [2008.12.06 14:20:18]
partion by는 옵션이지만 order by 반드시 써야 합니다.
그룹에 대해 같은 번호를 매기려는 것이면
dense_rank() over (order by a)로 바꾸시면 되겠네요

by 웅 [2008.12.07 11:08:03]
분석함수의 특징을 잘 보시면 알 수 있겠죠..order by이 반드시 있어야 하는 분석함수가 있고 아닌게 있지요.
그 중 rank, row_number같은 분석합수의 기능은 순서를 매기는 것인데.. 어떤 기준으로 순서를 매길지 정해야되는 것은 당연한 이야기라 할 수 있습니다.
그런데 분석함수를 사용하지 않아도 될 수 있는 상황인것 같네요.
select 절에 '1'로 상수처리하는 것이 더 낫을 듯 합니다..

by 손님 [2008.12.08 00:47:19]
웅님 상수처리한다는 말은 order by 1의미하는건가요?

by 웅 [2008.12.08 09:24:47]
ROW_NUMBER() OVER(PARTITION BY a order by 1 )
이렇게 처리하게 되면 원하시는 결과가 나오시는 건지요?
위와 같이 하면 row_number() 절은 기준없이(?) 나올것 같은데 제 경험에 비추어 그 값이 업무상 의미있다고 보여지지 않아서요..
분석함수의 내부적인 동작이 가벼운 것도 아닌데 다른 방법이 있는지 모색해보는것도 좋을것 같다는 의견이었습니다.
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입