프로그래머스 SQL 고득점 Kit - 있었는데요 없었습니다

Jinyoung Cheon·2025년 8월 13일
0

코딩테스트

목록 보기
15/25

프로그래머스 SQL 고득점 Kit
https://school.programmers.co.kr/learn/challenges?tab=sql_practice_kit

JOIN

problem

관리자의 실수로 일부 동물의 입양일이 잘못 입력되었습니다. 보호 시작일보다 입양일이 더 빠른 동물의 아이디와 이름을 조회하는 SQL문을 작성해주세요. 이때 결과는 보호 시작일이 빠른 순으로 조회해야합니다.

code

SELECT INS.ANIMAL_ID, INS.NAME

FROM ANIMAL_INS AS INS

JOIN ANIMAL_OUTS AS OUTS

ON INS.ANIMAL_ID = OUTS.ANIMAL_ID

WHERE INS.DATETIME > OUTS.DATETIME

ORDER BY INS.DATETIME ASC;

note

ANIMAL_INS 테이블과 ANIMAL_OUTS 테이블에 있는 DATETIME 컬럼의 값들은 다음과 같은 형식으로 저장되어 있다. (예:2025-08-13 18:10:43)

처음에는 DATE를 활용하여 다음과 같이 쿼리를 작성했다.
문제에서 요구하는 방식대로 결과값은 출력되었지만, 테스트 케이스를 실패했다.

SELECT INS.ANIMAL_ID, INS.NAME

FROM ANIMAL_INS AS INS

JOIN ANIMAL_OUTS AS OUTS

ON INS.ANIMAL_ID = OUTS.ANIMAL_ID

WHERE DATE(INS.DATETIME) > DATE(OUTS.DATETIME)

ORDER BY INS.DATETIME ASC;

실패의 원인을 찾다가, DATE는 날짜만 비교한다는 사실을 인지하게 되었다.
DATE(INS.DATETIME) > DATE(OUTS.DATETIME)는 시간의 범위를 놓치게 된다.
(예: 2025-08-13 09:41:00 vs 2025-08-13 18:00:00)

profile
데이터를 향해, 한 걸음씩 천천히.

0개의 댓글