본문 바로가기
  • 실행력이 모든걸 결정한다
DB/SQL Problems

[SQL-String, Date, 난이도 중] 오랜 기간 보호한 동물(2)

by 김코더 김주역 2020. 12. 8.
반응형

<ANIMAL_INS> 테이블

 

<ANIMAL_OUTS> 테이블

 

문제 설명

 

해설 : 두 테이블 "ANIMAL_INS" 와 "ANIMAL_OUTS" 를 ANIMAL_ID에 대해 JOIN 해주면 ANIMAL_ID 별로 보호소에 들어온 시각과 입양 간 시각을 한 레코드에 조회할 수 있다.

그리고 여기서 보호 기간이 가장 긴 순으로 정렬을 해야 하는데, 보호 기간은 단순히 ANIMAL_OUTS의 DATETIME 값에서 ANIMAL_INTS의 DATATIME 값을 빼면 구할 수 있다. 이를 기준으로 내림차 순으로 정렬했을 때의 상위 2개 레코드를 추출해서 문제에서 원하는 정보인 ANIMAL_ID와 NAME 을 조회하면 된다.

 

 

SELECT AI.ANIMAL_ID, AI.NAME 
FROM ANIMAL_INS AI JOIN ANIMAL_OUTS AO
ON AI.ANIMAL_ID=AO.ANIMAL_ID
ORDER BY AO.DATETIME-AI.DATETIME DESC
LIMIT 2;

 

 

 

 

SELECT : 조회하라

 

AI.ANIMAL_ID, AI.NAME : AI 테이블의 "ANIMAL_ID", "NAME" 필드를

 

FROM ANIMAL_INS AI JOIN ANIMAL_OUTS AO : ANIMAL_INS와 ANIMAL_OUTS 를 JOIN으로 합친 테이블에서 (단, 앞으로 ANIMAL_INS 대신 AI를, ANIMAL_OUTS 대신 AO를 사용할 수 있게 한다)

 

ON AI.ANIMAL_ID=AO.ANIMAL_ID :  AI 테이블의 ANIMAL_ID 필드 값과 AO 테이블의 ANIMAL_ID 필드 값이 같은 레코드를 기준으로

 

ORDER BY AO.DATETIME-AI.DATETIME DESC : AO 테이블의 DATETIME에 AI 테이블의 DATETIME 을 뺀 값를 기준으로 내림차순 하여

 

LIMIT 2 : 상위 2개의 레코드 만큼

반응형

댓글