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() 버튼을 클릭하여 작성 하시면 됩니다.