<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개의 레코드 만큼
'DB > SQL Problems' 카테고리의 다른 글
[SQL-String, Date, 난이도 중하] 중성화 여부 파악하기 (0) | 2020.12.08 |
---|---|
[SQL-String, Date, 난이도 중하] DATETIME에서 DATE로 형 변환 (0) | 2020.12.08 |
[SQL-GROUP BY, 난이도 중하] 고양이와 개는 몇 마리 있을까 (0) | 2020.12.08 |
[SQL-GROUP BY, 난이도 중] 동명 동물 수 찾기 (0) | 2020.12.08 |
[SQL-SUM,MAX,MIN, 난이도 하] 최댓값 구하기 (0) | 2020.12.08 |
댓글