정보
분류 : JOIN
문제
풀이
-- 조 건 : 입양간 동물 중 보호 기간이 가장 길었던 동물 두마리 추출
-- 조회컬럼 : 아이디, 이름
-- 정렬조건 : 보호 기간이 긴 순으로 조회
풀이 1. SELECT절
SELECT ANIMAL_ID
, NAME
FROM (
SELECT I.ANIMAL_ID
, I.NAME
, ROUND(O.DATETIME - I.DATETIME) + 1 AS "DATETIME"
FROM ANIMAL_OUTS O
JOIN ANIMAL_INS I
ON O.ANIMAL_ID = I.ANIMAL_ID
ORDER BY DATETIME DESC
)
WHERE ROWNUM <= 2
풀이 2. ORDER BY절
SELECT *
FROM (
SELECT I.ANIMAL_ID
, I.NAME
FROM ANIMAL_OUTS O
JOIN ANIMAL_INS I
ON O.ANIMAL_ID = I.ANIMAL_ID
ORDER BY ROUND(O.DATETIME - I.DATETIME) DESC
)
WHERE ROWNUM <= 2
풀이 내용
두가지 풀이의 차이점은 보호 기간을 계산한 내용이 어느 절에 있느냐이다.
다른 분들은 ORDER BY절에 바로 넣어서 연산과 정렬을 한 번에 했는데 글쓴이는 SELECT절에서 연산해서 ORDER BY절을 통해 연산한 결과값을 정렬해주었다. 역시 풀이법은 다양하다..!
조건에 해당하는 동물을 두마리만 추출해야하기 때문에 두가지 풀이 모두 ROWNUM을 사용해주었다.
'💡문제 풀이 > 프로그래머스 - Oracle' 카테고리의 다른 글
조건별로 분류하여 주문상태 출력하기 / 131113 (0) | 2024.06.25 |
---|---|
헤비 유저가 소유한 장소 / 77487 (0) | 2024.06.25 |
오랜 기간 보호한 동물(1) / 59044 (0) | 2024.06.25 |
있었는데요 없었습니다 / 59042 (0) | 2024.06.25 |
없어진 기록 찾기 / 59042 (0) | 2024.06.25 |