<ANIMAL_INS> 테이블
<ANIMAL_OUTS> 테이블
문제 설명
해설 : ANIMAL_INS, ANIMAL_OUTS 테이블에 있는 동물들은 각각 보호소에 왔던 동물들, 입양 간 동물들이다.
아직 입양을 못 간 동물들을 벤 다이어그램으로 나타내면 다음과 같다. (A=ANIMALS_INS, B=ANIMAL_OUTS)
A를 B와 LEFT JOIN을 해주고 B 부분을 제거해주면 해당 테이블을 만들 수 있다.
이 테이블에서 보호소에 있었던 기간은 보호소에 일찍 들어온 동물일 수록 더 길 것이다. 이 조건을 상위 3개의 레코드까지 적용하여, 문제가 원하는 정보인 NAME, DATETIME 값을 레코드마다 추출하여 반환해주면 된다.
SELECT AI.NAME, AI.DATETIME
FROM ANIMAL_INS AI LEFT JOIN ANIMAL_OUTS AO
ON AI.ANIMAL_ID=AO.ANIMAL_ID
WHERE AO.ANIMAL_ID IS NULL
ORDER BY AI.DATETIME
LIMIT 3;
* FROM문에서 ANIMAL_INS를 AI로, ANIMAL_OUTS를 AO로 사용할 수 있게 설정했다.
SELECT : 조회하라
AI.NAME, AI.DATETIME : ANIMAL_INS 테이블에 있는 NAME, DATETIME 필드값들을
FROM ANIMAL_INS AI LEFT JOIN ANIMAL_OUTS AO
ON AI.ANIMAL_ID=AO.ANIMAL_ID
WHERE AO.ANIMAL_ID IS NULL :
ANIMAL_ID를 기준으로 ANIMAL_INS에만 있는 레코드들 중에서 (단, 앞으로 ANIMAL_INS 대신 AI를, ANIMAL_OUTS 대신 AO를 사용할 수 있게 한다)
ORDER BY AI.DATETIME : AI 테이블의 DATETIME을 기준으로 오름차순 하여
LIMIT 3 : 상위 3개의 레코드만큼
'DB > SQL Problems' 카테고리의 다른 글
[SQL-JOIN, 난이도 중하] 없어진 기록 찾기 (0) | 2020.12.07 |
---|---|
[SQL-JOIN, 난이도 중하] 있었는데요 없었습니다 (0) | 2020.12.07 |
[SQL-JOIN, 난이도 중상] 보호소에서 중성화한 동물 (0) | 2020.12.04 |
[SQL-NULL, 난이도 중] NULL 처리하기 (0) | 2020.12.04 |
[SQL-NULL, 난이도 하] 이름이 있는 동물의 아이디 (0) | 2020.12.04 |
댓글