테이블 index
ANIMAL_INS
AME | TYPE | NULLABLE |
ANIMAL_ID | VARCHAR(N) | FALSE |
ANIMAL_TYPE | VARCHAR(N) | FALSE |
DATETIME | DATETIME | FALSE |
INTAKE_CONDITION | VARCHAR(N) | FALSE |
NAME | VARCHAR(N) | TRUE |
SEX_UPON_INTAKE | VARCHAR(N) | FALSE |
ANIMAL_OUTS
NAME | TYPE | NULLABLE |
ANIMAL_ID | VARCHAR(N) | FALSE |
ANIMAL_TYPE | VARCHAR(N) | FALSE |
DATETIME | DATETIME | FALSE |
NAME | VARCHAR(N) | TRUE |
SEX_UPON_OUTCOME | VARCHAR(N) | FALSE |
문제
관리자의 실수로 일부 동물의 입양일이 잘못 입력되었습니다. 보호 시작일보다 입양일이 더 빠른 동물의 아이디와 이름을 조회하는 SQL문을 작성해주세요. 이때 결과는 보호 시작일이 빠른 순으로 조회해야합니다.
예시

풀이
INS와 OUTS의 날짜 비교를 하면 비교적 쉬운 문제였다.
INS와 OUTS의 날짜를 비교하기 위해서는 두 테이블에 날짜가 필요 했기 때문에
INNER JOIN
을 사용하였다.SELECT *
from ANIMAL_INS a inner join ANIMAL_OUTS b
On a.ANIMAL_ID = b.ANIMAL_ID
그리고
where
절에서 INS
의 날짜가 OUTS
보다 더 빠르면 잘못된 데이터이기 때문에 INS > OUT
의 조건으로 찾은 다음 order by
로 보호 시작일을 기준으로 빠른 순이라고 했으니 INS
의 DATETIME
으로 정렬 해주었다.SELECT a.ANIMAL_ID, a.NAME
from ANIMAL_INS a inner join ANIMAL_OUTS b
On a.ANIMAL_ID = b.ANIMAL_ID
where a.DATETIME > b.DATETIME
order by a.DATETIME


Share article