알고리즘 공부/SQL

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

마달랭 2024. 10. 18. 16:12
반응형

테이블 정보

1. 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

 

2.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

 

예시 테이블

1. ANIMAL_INS 

ANIMAL_ID ANIMAL_TYPE DATETIME INTAKE_CONDITION NAME SEX_UPON_INTAKE
A350276 Cat 2017-08-13 13:50 Normal Jewel Spayed Female
A381217 Dog 2017-07-08 9:41 Sick Cherokee Neutered Male

 

2.ANIMAL_OUTS 

ANIMAL_ID ANIMAL_TYPE DATETIME NAME SEX_UPON_OUTCOME
A350276 Cat 2018-01-28 17:51 Jewel Spayed Female
A381217 Dog 2017-06-09 18:51 Cherokee Neutered Male

 

 

문제

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

 

 

아이디어

  1. 보호 시작일보다 입양일이 더 빠른 = ANIMAL_INS의 DATETIME이 ANIMAL_OUTS의 DATETIME보다 크면
  2. 일단 두 테이블의 비교를 위해 JOIN을 진행해야 겠다.
  3. 결과는 보호 시작일이 빠른 순으로 조회 = ANIMAL_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

 

 

 

참고사항

없음

 

 

 

 

 

 

728x90
반응형