🔗 문제 link : https://school.programmers.co.kr/learn/courses/30/lessons/59411
🖥️ 문제 풀이
SELECT
I.ANIMAL_ID,
I.NAME
FROM ANIMAL_INS I
JOIN ANIMAL_OUTS O ON I.ANIMAL_ID = O.ANIMAL_ID
ORDER BY DATEDIFF(O.DATETIME, I.DATETIME) DESC
LIMIT 2;
💡 문제 해결
놓친 부분
1. LEFT JOIN + IS NOT NULL → INNER JOIN
입양 간 동물만 필요하다면
LEFT JOIN ...
WHERE O.ANIMAL_ID IS NOT NULL
보다
JOIN ...
이 더 간단하고 같은 결과가 나옴
❌ 잘못 생각한 방향
HAVING DATEDIFF(...)
⭕ 맞는 방향
ORDER BY DATEDIFF(...) DESC
LIMIT 2
→ 보호 기간이 긴 순으로 정렬 후 상위 2개 추출
'SQL Coding Test > [Programmers]' 카테고리의 다른 글
| [Programmers] 자동차 대여 기록에서 대여중 / 대여 가능 여부 구분하기 (Lv.3) (0) | 2026.05.26 |
|---|---|
| [Programmers] 조건에 맞는 사용자 정보 조회하기 (Lv.3) (0) | 2026.05.26 |
| [Programmers] 조건에 맞는 개발자 찾기 (Lv.2) (0) | 2026.05.24 |
| [Programmers] 연도별 대장균 크기의 편차 구하기 (Lv.2) (0) | 2026.05.23 |
| [Programmers] 업그레이드 된 아이템 구하기 (Lv.2) (0) | 2026.05.23 |