✔️ Algorithm/Programmars
[프로그래머스/MySQL] 오랜 기간 보호한 동물(1)
Eunse
2023. 9. 2. 01:11
https://school.programmers.co.kr/learn/courses/30/lessons/59044
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
✔️ 풀이
1. SELECT
- 문제 조건에 맞게 NAME과 DATETIME을 조회한다.
2. FROM
- ANIMAL_OUTS를 기준으로 LEFT JOIN을 수행하므로 ANIMAL_INS로 설정한다.
3. LEFT JOIN
- 아직 입양을 못간 동물들을 조회해야 하므로, ANIMAL_INS와 ANIMAL_OUTS에서 ANIMAL_ID값이 같은 것 끼리 LEFT JOIN하여 입양가지 못한 동물을 조회한다.
4. WHERE
- ANIMAL_OUTS 테이블은 입양 보낸 동물들의 정보를 담은 테이블이므로, ANIMAL_INS와 JOIN된 테이블에서 ANIMAL_OUTS의 ANIMAL_ID값이 없는 경우(= NULL)가 아직 입양을 못간 동물을 의미한다.
5. ORDER BY
- 가장 오래 보호소에 있던 동물 3마리를 조회해야 하므로, DATETIME을 오름차순(ASC) 정렬한 뒤, LIMIT값을 3으로 설정하여 3마리만 조회하도록 한다.
✔️ 코드
SELECT ANIMAL_INS.NAME, ANIMAL_INS.DATETIME
FROM ANIMAL_INS
LEFT JOIN ANIMAL_OUTS ON ANIMAL_INS.ANIMAL_ID = ANIMAL_OUTS.ANIMAL_ID
WHERE ANIMAL_OUTS.ANIMAL_ID IS NULL
ORDER BY ANIMAL_INS.DATETIME ASC
LIMIT 3;