Re:제로부터 시작하는 갓생

[MySQL] 오랜 기간 보호한 동물(1)_Lv.3 본문

CodeKata/SQL

[MySQL] 오랜 기간 보호한 동물(1)_Lv.3

기븜 2025. 1. 10. 09:18
문제 https://school.programmers.co.kr/learn/courses/30/lessons/59044
 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

ANIMAL_INS 테이블은 동물 보호소에 들어온 동물의 정보를 담은 테이블입니다. ANIMAL_INS 테이블 구조는 다음과 같으며, ANIMAL_ID, ANIMAL_TYPE, DATETIME, INTAKE_CONDITION, NAME, SEX_UPON_INTAKE는 각각 동물의 아이디, 생물 종, 보호 시작일, 보호 시작 시 상태, 이름, 성별 및 중성화 여부를 나타냅니다.

ANIMAL_OUTS 테이블은 동물 보호소에서 입양 보낸 동물의 정보를 담은 테이블입니다. ANIMAL_OUTS 테이블 구조는 다음과 같으며, ANIMAL_ID, ANIMAL_TYPE, DATETIME, NAME, SEX_UPON_OUTCOME는 각각 동물의 아이디, 생물 종, 입양일, 이름, 성별 및 중성화 여부를 나타냅니다. ANIMAL_OUTS 테이블의 ANIMAL_ID는 ANIMAL_INS의 ANIMAL_ID의 외래 키입니다.

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

 

요구사항

animal_ins 테이블과 animal_outs 테이블을 animal_id 기준으로 left join

OUT 테이블 아직 입양을 못간 동물 animal_id null값 필터링-> where

INS 테이블 동물 이름, 보호 시작일 조회 select

INS 테이블 보호 시작일 순으로 오름차순 정렬 order by

가장 오래 보호소에 있었던 동물 3마리 출력 limit

 

풀이방법
더보기
-- 코드를 입력하세요
SELECT ai.name as 'NAME', 
       ai.datetime as 'DATETIME'
from animal_ins as ai
left join animal_outs as ao 
on ai.animal_id = ao.animal_id
where ao.animal_id is null
order by 2
limit 3

 

배운점

서브쿼리 사용하지 않고 LEFT JOIN만으로 가능한 문제풀기

컬럼명 쓸때 따옴표를 잘못 쓰면 문자열로 인식 할 수 있으니 주의