본문 바로가기
SQL 이야기

프로그래머스 JOIN (3) - 오랜 기간 보호한 동물(1)

by bjgu97 2022. 4. 3.
반응형

입양을 가지 못한 동물 중 가장 오래 보호소에 있었던 동물 3마리를 구해야 한다.

조건을 하나씩 살펴보면..

 

1) 입양을 가지 못한 동물을 구한다. 즉, ANIMAL_INS에는 있지만 ANIMAL_OUTS에는 없는 동물을 구해야 한다.

SELECT I.NAME, I.DATETIME
FROM ANIMAL_INS I LEFT OUTER JOIN ANIMAL_OUTS O
ON I.ANIMAL_ID = O.ANIMAL_ID
WHERE O.ANIMAL_ID IS NULL -- ANIMAL_OUTS에는 없는(NULL) 동물

 

 

2) 가장 오래 보호소에 있었던 동물 3마리, 즉 보호 시작일이 빠른 동물 3마리를 구해야 한다. 따라서, 보호 시작일로 정렬을 한다.

SELECT I.NAME, I.DATETIME
FROM ANIMAL_INS I LEFT OUTER JOIN ANIMAL_OUTS O
ON I.ANIMAL_ID = O.ANIMAL_ID
WHERE O.ANIMAL_ID IS NULL -- ANIMAL_OUTS에는 없는(NULL) 동물
ORDER BY I.DATETIME

 

 

3) 상위 3마리를 구한다. 이때, LIMIT를 사용한다.

SELECT I.NAME, I.DATETIME
FROM ANIMAL_INS I LEFT OUTER JOIN ANIMAL_OUTS O
ON I.ANIMAL_ID = O.ANIMAL_ID
WHERE O.ANIMAL_ID IS NULL -- ANIMAL_OUTS에는 없는(NULL) 동물
ORDER BY I.DATETIME
LIMIT 3

댓글