2011.09.09 03:47
ROW_NUMBER() OVER(PARTITION BY 어떻게..해야 할까요???
조회 수 27092 추천 수 0 댓글 5
SELECT
HOSTNAME,
FS_NAME,
SPACE_USED_PCT
FROM
(
SELECT
ROW_NUMBER() OVER(PARTITION BY HOSTNAME ORDER BY SPACE_USED_PCT DESC) AS
ROOM_NUMBER,
HOSTNAME,
FS_NAME,
SPACE_USED_PCT
FROM
(
SELECT
IA.HOSTNAME,
IA.FS_NAME,
MAX(SPACE_USED_PCT) SPACE_USED_PCT
FROM
IVU_V_PER_SVLDK IA,
(
SELECT
HOSTNAME ,
MAX(DATETIME) DATETIME
FROM
IVU_V_PER_SVLDK
GROUP BY
HOSTNAME
)
IB
WHERE
IA.HOSTNAME = IB.HOSTNAME
AND IA.DATETIME = IB.DATETIME
AND IA.FS_NAME != '_Total'
GROUP BY
IA.HOSTNAME,
IA.FS_NAME
)
)
WHERE
ROOM_NUMBER = 1
AND HOSTNAME IS NOT NULL
위에.. ROW_NUMBER() OVER(PARTITION BY HOSTNAME ORDER BY SPACE_USED_PCT DESC) 이 걸.. 어떻게 대채해야 할까요?
참고로.. DB2 에서 돌아가던 쿼리입니다.
그리고, 밑에 이거랑 비슷한 게시글이 있던데, group by 절에 명시하지도 않은 컬럼을 써놓으셨더라구요.. 돌아가지 않을거 같아 보이는데, 제대로 된 답변 부탁드립니다.
- ?
-
?
지금 2주 가까이 지난거 같은데, 답변이 없으시네요. 이 함수를 대체 할수 있는 방법은 없는건가요??
-
?
답변이 늦어서 죄송합니다.
문의 하신 함수는 현재 CUBRID에서 지원하지 않습니다. 단순 하게 rank() over(order by sal desc)와 같은 형식의 쿼리라면 아래와 같은 유형으로 변경하여 사용하는 것이 가능합니다.(CUBRID에 기본 설치 DB인 demodb에 예제 테이블이 있습니다.)
--아래--
select A.*, B_2 Rank from history A, (select host_year,orderby_num() from history group by host_year order by host_year) B where A.host_year=B.host_year
----------
하지만 rank() over(partition by ....), row_number() over(..., dense_rank() over(... 와 같은 함수를 지원하지 않기 때문에 원하는 결과에 대해 1회성 Query를 이용하여 조회하는 것은 불가능 할 것입니다.
따라서 해당 사항을 응용에서 구현하여 조치하는 것이 필요할 것입니다.
-
?
저 혹시, http://blackbull.tistory.com/43 이 사이트의 mysql처럼 큐브리드에서 이렇게 할수 없나요?
-
?
원래 질문하신 analytic functions은 다음 major version에 포함되어 제공될 예정입니다.
내년 상반기 중으로 출시될 것입니다.
안녕하세요.
큐브리드를 사용해 주셔서 감사합니다. 문의하신 내용에 대하여 답변을 준비중이오니, 조금만 기다려 주시면 감사하겠습니다.