프로그래머스_오랜 기간 보호한 동물(1)_Oracle
2022. 9. 22. 14:12ㆍDataBase/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<4728x90
반응형
LIST
'DataBase > SQL Query Problem' 카테고리의 다른 글
| [프로그래머스] 없어진 기록 찾기_Oracle, MySQL (0) | 2022.09.26 |
|---|---|
| 프로그래머스_오랜 기간 보호한 동물(2)_Oracle (0) | 2022.09.23 |
| 프로그래머스_중성화 여부 파악하기_Oracle (0) | 2022.09.21 |
| 프로그래머스_DATETIME에서 DATE로 형 변환_Oracle (0) | 2022.09.20 |
| 프로그래머스_중복 제거하기_Oracle (0) | 2022.09.19 |