프로그래머스 SQL 고득점 킷 오랜 기간 보호한 동물(1)

hysss·2023년 2월 17일
0

JOIN - 오랜 기간 보호한 동물(1)

문제 분석

아직 입양을 못 간 동물 중,
가장 오래 보호소에 있었던 동물
3마리
이름과 보호 시작일을 조회하는 SQL문을 작성해주세요.
이때 결과는 보호 시작일 순으로 조회해야 합니다.

코드

SELECT I.NAME, I.DATETIME
FROM ANIMAL_INS I LEFT JOIN ANIMAL_OUTS O ON I.ANIMAL_ID=O.ANIMAL_ID
WHERE O.ANIMAL_ID IS NULL
ORDER BY I.DATETIME
LIMIT 3;

문제 풀이

입양을 못 갔다는 것은 ANIMAL_INS LEFT JOIN ANIMAL_OUTS를 수행했을 때, ANIMAL_OUTS에 대해서 NULL인 값들이 존재한다는 것이다.

그리고 가장 오래 보호소에 있었다가장 오래된 날짜를 구해야 하므로 ASC로 작은 값부터 3개를 출력하면 된다.

보호 시작일 순으로 조회하는 것도 제일 먼저 들어온 동물, 즉 가장 오래된 날짜부터 조회하는 것이기 때문에 위에서 썼던 조건 그대로 ORDER BY I.DATETIME을 사용하면 된다.

만약 두 번째로 들어온 동물부터 출력해야 했다면 아마 서브 쿼리를 써야했지 않을까, 하는데 서브 쿼리에서는 LIMIT을 사용하지 못한다고 한다.
나중에 생각해 봐야겠다.

profile
매일 매일 규칙적으로

0개의 댓글