이 문제에서 원하는 것은
1. 입양을 간 동물이여야 하고
2. 보호기간이 가장 길었던 동물이어야 하고
3. 2마리만 조회해야 한다.
ANIMAL_INS 테이블과 ANIMAL_OUTS 테이블을 보고 1,2,3번을 차근차근 sql로 바꾸어 보겠다.
일단 1. 입양을 간 동물 이란 소리는 ANIMAL_OUTS에 데이터가 존재해야 한다는 소리이고, 이를 위해 INNER JOIN을 사용하여 데이터를 조회하도록 하겠다.
FROM ANIMAL_INS A INNER JOIN ANIMAL_OUTS B ON A.ANIMAL_ID = B.ANIMAL_ID
조건은 두 테이블이 공통적으로 가지고 있는 아이디를 조건으로 주었다.
그 다음 2번은 가장 보호소에 오래 있어야 한다는 조건은 보호소에 들어오고 입양을 나간 시점이 가장 오래된 동물을 의미하기 때문에 ORDER BY절을 이용하여 두 테이블의 DATETIME의 차이가 가장 큰 동물부터 정렬하면 될 것이다.
ORDER BY A.DATETIME - B.DATETIME ASC
그다음 3. 두마리만 조회 는 LIMIT절을 이용하면 될것이다.
LIMIT 2 ;
이를 다 종합하면 sql문이 이렇게 나오게 될 것이다.
SELECT A.ANIMAL_ID, A.NAME
FROM ANIMAL_INS A INNER JOIN ANIMAL_OUTS B ON A.ANIMAL_ID = B.ANIMAL_ID
ORDER BY A.DATETIME - B.DATETIME ASC LIMIT 2 ;
'코딩테스트' 카테고리의 다른 글
프로그래머스 조건별로 분류하여 주문상태 출력하기 (0) | 2023.09.04 |
---|---|
프로그래머스 카테고리 별 도서 판매량 집계하기 (0) | 2023.09.03 |
프로그래머스 있었는데요 없었습니다 (0) | 2023.09.02 |
프로그래머스 오랜 기간 보호한 동물(1) (0) | 2023.09.01 |
백준 돌 게임7 (9661번) (0) | 2022.08.31 |