[MySQL] 오랜 기간 보호한 동물(1)_Lv.3
문제 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만으로 가능한 문제풀기
컬럼명 쓸때 따옴표를 잘못 쓰면 문자열로 인식 할 수 있으니 주의