코딩테스트/SQL

[MySQL] - 오랜 기간 보호한 동물(1)

rlatotquf45 2024. 10. 26. 12:00
728x90
반응형

https://school.programmers.co.kr/learn/courses/30/lessons/59044

문제 요약

ANIMAL_INS와 ANIMAL_OUTS 테이블을 사용하여, 아직 입양되지 않은 동물보호소에 가장 오래 있었던 동물 3마리의 이름과 보호 시작일을 조회하는 SQL 쿼리를 작성해야 합니다. 결과는 보호 시작일 기준 오름차순으로 정렬합니다.

풀이 방법

 

  • ANIMAL_INS 테이블의 동물 중 ANIMAL_OUTS 테이블에 입양 기록이 없는 동물을 찾아야 하므로 LEFT JOIN을 사용합니다.
  • LEFT JOIN 후, ANIMAL_OUTS 테이블의 ANIMAL_ID가 NULL인 경우, 해당 동물은 입양되지 않았음을 의미합니다.
  • 보호 시작일(DATETIME)을 기준으로 정렬하여 상위 3마리의 데이터를 가져옵니다.

 

정답 코드

-- 코드를 입력하세요
SELECT i.name, i.datetime
from animal_ins as i left join animal_outs as o
on i.animal_id = o.animal_id
where o.animal_id is null
order by i.datetime asc
limit 3

새롭게 배운 내용

 

  • LEFT JOIN: 입양 기록이 없는 동물을 찾기 위해 ANIMAL_OUTS와 연결하되, ANIMAL_OUTS에 없는 데이터만 선별합니다.
  • IS NULL 조건: LEFT JOIN 결과 중 ANIMAL_OUTS 테이블의 ANIMAL_ID가 NULL인 경우 입양되지 않은 동물로 간주합니다.

 

728x90
반응형