[프로그래머스 SQL] 있었는데요 없었습니다.

Hwalyo·2022년 8월 28일
0
post-custom-banner

문제 설명

ANIMAL_INS 테이블은 동물 보호소에 들어온 동물의 정보를 담은 테이블입니다.
ANIMAL_OUTS 테이블은 동물 보호소에서 입양 보낸 동물의 정보를 담은 테이블입니다.

ANIMAL_INS

NAME	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문을 작성해주세요. 이때 결과는 보호 시작일이 빠른 순으로 조회해야합니다.

해결

  1. 두 테이블을 비교해야해서 INNER JOIN 사용 Natural JOIN의 경우 중복 컬럼이 많아 적합하지 않다고 생각했다.
  2. 조인의 기준이 되는 컬럼은 ANIMAL_ID.
  3. ANIMAL_INS 테이블의 DATETIME > ANIMAL_OUTS 테이블의 DATETIME보다 큰 경우 동작
  4. ORDER BY 조건절에는 보호시작이리 빠른순으로 조회 = AN.DATETIME의 오름차순

MySQL

SELECT AN.ANIMAL_ID, AN.NAME
FROM ANIMAL_INS AN INNER JOIN  ANIMAL_OUTS AO
ON AN.ANIMAL_ID = AO.ANIMAL_ID
WHERE  AN.DATETIME > AO.DATETIME
ORDER BY AN.DATETIME

Oracle

SELECT AN.ANIMAL_ID, AN.NAME
FROM ANIMAL_INS AN INNER JOIN  ANIMAL_OUTS AO
ON AN.ANIMAL_ID = AO.ANIMAL_ID
WHERE  AN.DATETIME > AO.DATETIME
ORDER BY AN.DATETIME
profile
꾸준하게글을작성해보자
post-custom-banner

0개의 댓글