Notice
Recent Posts
Recent Comments
Link
«   2026/02   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
Tags more
Archives
Today
Total
관리 메뉴

luke

[프로그래머스] - 있었는데요 없었습니다 (MySQL) 본문

DB/프로그래머스(MySQL)

[프로그래머스] - 있었는데요 없었습니다 (MySQL)

luke-king 2026. 1. 25. 16:49

문제 : https://school.programmers.co.kr/learn/courses/30/lessons/59043

 

프로그래머스

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

programmers.co.kr

 

 

 

 

 

 

 

 

 

 

문제.


 

 

 

 

 

 

풀이.


SELECT ao.ANIMAL_ID, ao.NAME
FROM ANIMAL_OUTS AS ao
JOIN ANIMAL_INS AS ai
    ON ao.ANIMAL_ID = ai.ANIMAL_ID
WHERE ao.DATETIME < ai.DATETIME
ORDER BY ai.DATETIME

이번 문제는 프로그래머스 "있었는데요 없었습니다" MySQL 문제다.

문제 접근은 ANIMAL_INS 테이블에 있는 보호시작일(DATETIME) 보다 ANIMAL_OUTS 테이블의 입양일(DATETIME) 값이 더 빠른 값을 찾아내고 출력을 할 땐 ANIMAL_INS의 보호시작일(DATETIME) 값이 빠른 순으로 즉 오름 차순으로 정렬해주면 된다.

그럼 바로 풀이 해보겠다.

 

1. 출력하기 위한 컬럼 값들을 적어 준다.

 

2. JOIN을 사용해 준다. 사실 LEFT JOIN을 사용해도 문제없이 통과가 가능하지만 LEFT JOIN을 사용하게 되면 시간을 비교하는 WHERE 절에서 NULL값이 있는 값들은 행 자체가 제거되기 때문에 논리적으로는 JOIN을 사용하는 게 맞다.

 

3. WHERE 절을 추가해 입양일이 보호시작일보다 작은 값들을 걸러 준다.

 

4. 마지막으로 보호시작일을 기준으로 오름차순 해주면 끝이다.