프로그래머스_오랜 기간 보호한 동물(2)_Oracle

2022. 9. 23. 11:29DataBase/SQL Query Problem

728x90
반응형
SMALL

오랜 기간 보호한 동물(1)과 굉장히 유사한 문제다.

1은 LFET JOIN 이었다면 2는 RIGHT JOIN이다.

 

근데 처음에는 조인을 사용하지 않고 ANIMAL_OUTS만 사용하고도 풀 수 있다고 생각했다.

왜냐하면 입양보낸 동물들은 반드시 입양 보내기 전에 반드시 동물 보호소로 들어왔다고 가정했기 때문이다.

이런 가정으로 문제를 푸니까 자꾸 틀렸다고 나왔다.

그래서 두 테이블을 조인하여 각 테이블의 DATETIME과 그 차를 봤다.

 

짐작한대로 동물 보호소에 들어오지 않고도 입양을 갈 수 있었다.

즉 ANIMAL_OUTS.DATETIME은 존재하지만, ANIMAL_INS.DATETIME은 존재하지 않을 수도 있는 것이었다.

그래서 두 테이블을 조인할 필요가 있었다.

 

조인하고 나서 동물 보호소에 들어온 동물들로 한 번 필터링하고, 보호 기간 순으로 정렬하니까

원하는 레코드들이 나왔다.

 

그리고 저번 오랜 기간 보호한 동물(1)처럼 실수하지 않도록

ROWNUM<3을 넣어주었다.

 

SELECT *
FROM(
    SELECT B.ANIMAL_ID, B.NAME
    FROM ANIMAL_INS A RIGHT JOIN ANIMAL_OUTS B
    ON A.ANIMAL_ID=B.ANIMAL_ID
    WHERE A.DATETIME IS NOT NULL
    ORDER BY B.DATETIME-A.DATETIME DESC
)
WHERE ROWNUM<3
728x90
반응형
LIST