코딩테스트/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