본문 바로가기
코딩테스트/SQL

[프로그래머스] String, Date 〉Lv3. 오랜 기간 보호한 동물(2)

by imsha 2021. 10. 28.

문제 설명

 


예시

 


풀이 방법

입양 간 동물 중, 보호 기간이 가장 길었던 동물 두 마리의 아이디와 이름을 조회하는 문제로 결과는 보호 기간이 긴 순으로 조회 해야 합니다. 보호 시작일과 입양일의 차이를 구하여 가장 큰 값 순으로 나열하면 보호 기간이 가장 긴 동물 순으로 나열될 것입니다. 이를 위해 FROM절에서 두 테이블을 모두 적고 ALIAS를 사용하여 ANIMAL_INS는 I, ANIMAL_OUTS는 O으로 구분합니다. WHERE절에서는 각 테이블의 식별자인 아이디가 같을 때의 조건을 제시합니다. 다음으로 O의 입양일에서 I의 보호 시작일을 빼고, 이를 DESC로 내림차순으로 정렬합니다. 그러면 보호 기간이 긴 데이터는 상단에 위치하고 보호 기간이 짧은 데이터는 하단에 위치하게 됩니다. 그리고 가장 길었던 두 마리를 추출하기 위해 LIMIT 2를 사용하여 상위 2개 행을 추출합니다. 마지막으로 쿼리의 첫 줄인 SELECT절에 입양 간 동물 아이디와 입양 간 동물의 이름을 조회하기 위해 O테이블의 동물 아이디, 이름을 조회합니다.

 

 


문제 풀이

SELECT O.ANIMAL_ID, O.NAME
FROM ANIMAL_INS I , ANIMAL_OUTS O
WHERE I.ANIMAL_ID = O.ANIMAL_ID
ORDER BY O.DATETIME - I.DATETIME DESC
LIMIT 2

 


실행 결과

댓글