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
반응형
'코딩테스트 > SQL' 카테고리의 다른 글
[MySQL] 헤비유저가 소유한 장소 (0) | 2024.12.23 |
---|---|
[MySQL] 조건별로 분류하여 주문상태 출력하기 (0) | 2024.10.26 |
[MySQL] 카테고리 별 도서 판매량 집계하기 (1) | 2024.10.25 |
[MySQL] - 있었는데요 없었습니다 (0) | 2024.10.25 |
[MySQL] - 오랜 기간 보호한 동물(2) (2) | 2024.10.18 |