RANK 함수 사용시 조건을 어떻게 적용하나요 ? 0 3 2,371

by 이준하 [2007.02.20 17:15:35]


RANK() OVER (PARTITION BY key ORDER BY logdate) TEMP_RANK

이런식으로 RANK 를 구하고

항상 추가적인 데이터가 필요해서

99 TEMP_RANK 이런식으로 하고

union all 을 걸어서 데이터를 보여주는데요.

위에 있는 TEMP_RANK 결과중에 1~3까지의 데이터만 쓰고

나머지는 안쓰는 경우가 있어서

where 절에 해당 조건을 걸어주려고 했는데

where TEMP_RANK < 4 이런 조건이 적용되지 않더군요.

RANK 로 나오는 결과값은 숫자가 아닌가요..?

혹시 어떻게 적용해야 하는지...

by finecomp [2007.02.20 00:00:00]
쿼리가 없어 정확히는 모르겠으나 아마도 같은 레벨에서 조건을 쓰신 듯 하네요.
SELECT LIST에서 만들어지는 컬럼보다 일반적으로 WHERE조건이 먼저 수행되기 때문에 같은 레벨에서 만들어지는 컬럼에 대한 조건을 쓰면 알 수 없습니다...
SELECT *
FROM(
SELECT RANK() OVER (PARTITION BY key ORDER BY logdate) TEMP_RANK
FROM 테이블
)
WHERE temp_rank < 4
이런 절차로 해 보세요.

by 이준하 [2007.02.21 00:00:00]
쿼리는 finecomp 님이 남겨주신것과 비슷한데요.
레벨도 다른 레벨에서 사용하구요.
근데 적용이 안되요..ㅠㅠ

by finecomp [2007.02.22 00:00:00]
다른 사람들은 어떻게 적용이 안되는지 알 길이 없으니, 단순히 적용이 안되다고만 하지 마시고, 정확한 답변을 원하신다면 님이 쓰신 쿼리와 원하시는 결과샘플정도는 올려보세요.
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입