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

2022. 9. 22. 14:12DataBase/SQL Query Problem

728x90
반응형
SMALL

sql문제 1,2 레벨을 다 풀고 나니 결국 join문제를 만나게 되었다.

 

이 문제의 핵심은 INS테이블과 OUTS테이블의 차집합을 골라내는 것인데

이 역할을 하는 것이 WHERE B.ANIMAL_ID IS NULL 이다.

 

기본적으로 INS테이블을 기준으로 하여 OUTER JOIN하면 INS테이블의 동물들을 모두 볼 수 있는데

이 때, 입양가지 못한 동물들은 B.ANIMAL_ID가 NULL일 것이다.

왜냐하면 입양가지 못했기 때문에 OUTS테이블에 속해있지 못할 것이고,

때문에 JOIN한 순간 입양가지 못한 동물 레코드의 OUTS테이블에 해당하는 컬럼들은 NULL이 된다.

 

마지막으로 3마리만 보이는 것이기 때문에 ROWNUM을 이용해 3마리만 출력하는 것을 잊지 말자.

(내가 잊은 건 아무도 몰라..)

 

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