프로그래머스_오랜 기간 보호한 동물(2)_Oracle
2022. 9. 23. 11:29ㆍDataBase/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<3728x90
반응형
LIST
'DataBase > SQL Query Problem' 카테고리의 다른 글
| 프로그래머스_헤비 유저가 소유한 장소_Oracle, MySQL (0) | 2022.09.27 |
|---|---|
| [프로그래머스] 없어진 기록 찾기_Oracle, MySQL (0) | 2022.09.26 |
| 프로그래머스_오랜 기간 보호한 동물(1)_Oracle (0) | 2022.09.22 |
| 프로그래머스_중성화 여부 파악하기_Oracle (0) | 2022.09.21 |
| 프로그래머스_DATETIME에서 DATE로 형 변환_Oracle (0) | 2022.09.20 |