코딩테스트/SQL

[MySQL] - 있었는데요 없었습니다

rlatotquf45 2024. 10. 25. 10:49
728x90
반응형

728x90
https://school.programmers.co.kr/learn/courses/30/lessons/59043

문제 요약

주어진 두 테이블 ANIMAL_INS와 ANIMAL_OUTS에서 보호소에 들어온 동물들 중에서 보호 시작일(DATETIME) 보다 입양일(DATETIME) 이 더 빠른 동물의 ANIMAL_ID와 NAME을 조회해야 합니다. 결과는 보호 시작일이 빠른 순서대로 정렬되어야 합니다.

풀이 방법

 

  • INNER JOIN: 두 테이블 ANIMAL_INS와 ANIMAL_OUTS는 ANIMAL_ID를 통해 연결되어 있습니다. 따라서 두 테이블을 ANIMAL_ID를 기준으로 조인하여 보호 시작일과 입양일 정보를 모두 가져옵니다.
  • 입양일 조건 필터링: 보호 시작일보다 입양일이 더 빠른 동물을 필터링해야 합니다. 즉, ANIMAL_INS.DATETIME이 ANIMAL_OUTS.DATETIME보다 나중이어야만 해당 데이터를 조회합니다.
  • 결과 정렬: 결과는 보호 시작일이 빠른 순서대로 출력되어야 하므로, ANIMAL_INS.DATETIME을 기준으로 정렬합니다.
  • 필요한 컬럼 선택: 최종적으로 ANIMAL_ID와 NAME만 출력해야 합니다.

 

정답 코드

-- 코드를 입력하세요
SELECT i.animal_id, i.name
from animal_ins as i JOIN animal_outs as o
ON i.animal_id = o.animal_id
where i.datetime > o.datetime
order by i.datetime asc

 

728x90
반응형