https://school.programmers.co.kr/learn/courses/30/lessons/59411
정답
SELECT ANIMAL_ID,NAME
FROM
(SELECT ROWNUM RN, T.*
FROM
(SELECT B.DATETIME- A.DATETIME protection_period ,A.NAME,A.ANIMAL_ID
FROM ANIMAL_OUTS B INNER JOIN ANIMAL_INS A
ON A.ANIMAL_ID=B.ANIMAL_ID
ORDER BY B.DATETIME- A.DATETIME DESC) T
) B
WHERE B.RN <=2
ORDER BY protection_period DESC
;
풀이
Step1) 인라인서브쿼리
SELECT B.DATETIME- A.DATETIME protection_period ,A.NAME,A.ANIMAL_ID
FROM ANIMAL_OUTS B INNER JOIN ANIMAL_INS A
ON A.ANIMAL_ID=B.ANIMAL_ID
ORDER BY B.DATETIME- A.DATETIME DESC
Step 2) ROWNUM 사용
SELECT ROWNUM RN, T.*
FROM
(SELECT B.DATETIME- A.DATETIME protection_period ,A.NAME,A.ANIMAL_ID
FROM ANIMAL_OUTS B INNER JOIN ANIMAL_INS A
ON A.ANIMAL_ID=B.ANIMAL_ID
ORDER BY B.DATETIME- A.DATETIME DESC) T
SELECT RN,ANIMAL_ID,NAME
FROM
(SELECT ROWNUM RN, T.*
FROM
(SELECT B.DATETIME- A.DATETIME protection_period ,A.NAME,A.ANIMAL_ID
FROM ANIMAL_OUTS B INNER JOIN ANIMAL_INS A
ON A.ANIMAL_ID=B.ANIMAL_ID
ORDER BY B.DATETIME- A.DATETIME DESC) T
) B
SELECT RN,ANIMAL_ID,NAME
FROM
(SELECT ROWNUM RN, T.*
FROM
(SELECT B.DATETIME- A.DATETIME protection_period ,A.NAME,A.ANIMAL_ID
FROM ANIMAL_OUTS B INNER JOIN ANIMAL_INS A
ON A.ANIMAL_ID=B.ANIMAL_ID
ORDER BY B.DATETIME- A.DATETIME DESC) T
) B
WHERE B.RN <=2
ORDER BY protection_period DESC
'DB > 프로그래머스' 카테고리의 다른 글
[Oracle] 주문량이 많은 아이스크림들 조회하기 (0) | 2024.09.28 |
---|---|
[Oracle] 저자 별 카테고리 별 매출액 집계하기 (0) | 2024.09.28 |
[Oracle] 즐겨찾기가 가장 많은 식당 정보 출력하기 (1) | 2024.09.23 |
[Oracle] 조건에 맞는 사용자와 총 거래금액 조회하기 (0) | 2024.09.23 |
[Oracle] 조회수가 가장 많은 중고거래 게시판의 첨부파일 조회하기 (0) | 2024.09.23 |