SELECT A.MEMBER_NAME
, B.REVIEW_TEXT
, TO_CHAR(B.REVIEW_DATE, 'YYYY-MM-DD') AS REVIEW_DATE
FROM MEMBER_PROFILE A
INNER
JOIN REST_REVIEW B
ON A.MEMBER_ID = B.MEMBER_ID
INNER
JOIN(
SELECT COUNT(SA.REVIEW_TEXT) AS CNT
, SA.MEMBER_ID
FROM REST_REVIEW SA
GROUP BY SA.MEMBER_ID
ORDER BY CNT DESC
FETCH NEXT 1 ROWS ONLY
-- FIRST
) C
ON A.MEMBER_ID = C.MEMBER_ID
ORDER BY B.REVIEW_DATE, B.REVIEW_TEXT
Oracle12 release부터 사용할 수 있는 구문으로 아래와 같은 다대일 관계를 형성하고 있다.
FETCH는 ORDER BY절 다음에 실행되고 쓸 수 있는 옵션은 다음과 같다.
SELECT *
FROM [테이블명]
--OFFSET [행 시작 위치] ROWS
FETCH FIRST [행의 수] ROW ONLY --지정한 숫자가 없다면 1건만 가져온다.
OFFSET offset {ROW|ROWS}
FETCH {FIRST | NEXT} [ {rowcount | percent PERCENT} ] {ROW | ROWS} { ONLY | WITH TIES}
◆ OFFSET 원하는 행의 제한갯수(Row limits)를 뽑기 이전에 스킵하고 싶은 행의 갯수가 있을 시 사용할 수 있다. OFFSET에 음수가 오게되면 0으로 인식하며, NULL이 오거나 리턴되는 행의 갯수보다 높은 수를 쓸 경우 아무행도 리턴되지 않는다.
◆ ONLY | WITH TIES ONLY는 사용자가 지정한 행의 제한갯수만 반환한다. WITH TIES는 사용자 지정한 행의 제한갯수에서 맨 마지막행과 같은 정렬키를 가진 행들을 보여준다.