정보
분류 : JOIN
문제
풀이
풀이 1. JOIN
SELECT O.ANIMAL_ID
, O.NAME
FROM ANIMAL_INS I
RIGHT JOIN ANIMAL_OUTS O
ON I.ANIMAL_ID = O.ANIMAL_ID
WHERE I.ANIMAL_ID IS NULL
ORDER BY O.ANIMAL_ID;
풀이 2. NOT EXISTS
SELECT ANIMAL_ID
, NAME
FROM ANIMAL_OUTS O
WHERE NOT EXISTS (
SELECT 1
FROM ANIMAL_INS
WHERE ANIMAL_ID = O.ANIMAL_ID
)
ORDER BY ANIMAL_ID
풀이 3. 다중행 서브쿼리
SELECT ANIMAL_ID
, NAME
FROM ANIMAL_OUTS
WHERE ANIMAL_ID IN (
SELECT ANIMAL_ID
FROM ANIMAL_INS
)
풀이 4. MINUS
SELECT X.ANIMAL_ID
, X.NAME
FROM (
SELECT ANIMAL_ID
, NAME
FROM ANIMAL_OUTS
MINUS
SELECT ANIMAL_ID
, NAME
FROM ANIMAL_INS
) X
풀이 내용
풀이 1에 대한 설명 : 유실된 데이터를 찾기 위해선 OUTER JOIN이 필요하다. ANIMAL_INS 테이블 내에 존재하는 ANIMAL_ID 컬럼에 데이터가 없으면 ANIMAL_OUTS 테이블의 ANIMAL_ID와 NAME을 출력해주었다.
JOIN 외에도 EXISTS, 다중행 서브쿼리, MINUS을 사용하여 문제를 풀 수 있다.
'💡문제 풀이 > 프로그래머스 - Oracle' 카테고리의 다른 글
오랜 기간 보호한 동물(1) / 59044 (0) | 2024.06.25 |
---|---|
있었는데요 없었습니다 / 59042 (0) | 2024.06.25 |
조건에 부합하는 중고거래 상태 조회하기 / 164672 (0) | 2023.11.03 |
자동차 평균 대여 기간 구하기 / 157342 (0) | 2023.11.03 |
자동차 종류 별 특정 옵션이 포함된 자동차 수 구하기 / 151137 (0) | 2023.11.03 |