💡문제 풀이/프로그래머스 - Oracle

오랜 기간 보호한 동물(2) / 59044

뇌 리셋은 기본이지 2024. 6. 25. 15:47

정보

분류 : 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을 사용해주었다.