코딩테스트/SQL 코딩테스트
<프로그래머스> 없어진 기록 찾기
배또가또
2023. 12. 21. 21:43
출처 : https://school.programmers.co.kr/learn/courses/30/lessons/59042
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
- 문제 요구사항
- 일부 데이터의 유실을 가정함
- 입양을 간 기록은 있는데, 보호소에 들어온 기록은 없는 동물의
- ID와 이름을 ID순으로 조회
- + 조회 시 이름이 없는(NULL) 데이터가 조회 될 경우 오답처리 나서 없앴음
간 기록은 있는데 들어온 기록은 없는 경우 OUTER JOIN으로 문제를 해결할 수 있다.
INS 테이블에 OUTS 테이블을 RIGHT OUTER JOIN 하면 입양 간 기록은 있는데 보호소에 들어온 기록이 없는 데이터까지 확인할 수 있다 해당 값이 NULL로 표기 되기 때문이다
따라서 WHERE 절에 INS테이블의 데이터 칼럼 중 하나를 골라 NULL인 경우를 조건으로 하여 조회하면
원하는 결과를 얻을 수 있다.
1) Oracle
SELECT O.ANIMAL_ID,
O.NAME
FROM ANIMAL_INS I RIGHT OUTER JOIN ANIMAL_OUTS O ON I.ANIMAL_ID = O.ANIMAL_ID
WHERE I.NAME IS NULL AND O.NAME IS NOT NULL
ORDER BY O.ANIMAL_ID
2) MySQL
SELECT O.ANIMAL_ID,
O.NAME
FROM ANIMAL_INS I RIGHT OUTER JOIN ANIMAL_OUTS O ON I.ANIMAL_ID = O.ANIMAL_ID
WHERE I.NAME IS NULL AND O.NAME IS NOT NULL
ORDER BY O.ANIMAL_ID