본문 바로가기
Problem Solving/프로그래머스 SQL

[프로그래머스 SQL] 없어진 기록 찾기

by Libi 2021. 8. 10.
반응형

https://programmers.co.kr/learn/courses/30/lessons/59042

 

코딩테스트 연습 - 없어진 기록 찾기

ANIMAL_INS 테이블은 동물 보호소에 들어온 동물의 정보를 담은 테이블입니다. ANIMAL_INS 테이블 구조는 다음과 같으며, ANIMAL_ID, ANIMAL_TYPE, DATETIME, INTAKE_CONDITION, NAME, SEX_UPON_INTAKE는 각각 동물의 아이디

programmers.co.kr

[ 문제풀이 ]

두 개의 테이블이 주어졌을 때 JOIN을 사용해서 투 테이블을 조합할 수 있는지를 묻는 문제이다.

이 문제는 두 개의 공통부분을 추출하는 것이 아닌 한쪽을 추출하는 것이기 때문에 LEFT or RIGHT OUTER JOIN을 사용해야 한다.

JOIN은 JOIN "조인할 테이블" ON "두 테이블을 조인할 키" WHERE "조건" 형식으로 사용한다. 또한, JOIN을 사용할 때는 반드시 테이블에 Alias를 사용해야 한다. 그 이유는 각 컬럼을 구별하기 위해서이다.

또한, JOIN을 사용하지 않고도 서브 쿼리와 NOT IN을 사용하여 해결할 수 있다.

/* LEFT OUTER JOIN */
SELECT O.ANIMAL_ID, O.NAME
FROM ANIMAL_OUTS AS O
LEFT OUTER JOIN ANIMAL_INS AS I
ON O.ANIMAL_ID = I.ANIMAL_ID
WHERE I.ANIMAL_ID IS NULL
ORDER BY O.ANIMAL_ID ASC;
----------------------------
/* 서브 쿼리 + NOT IN */
SELECT ANIMAL_ID, NAME
FROM ANIMAL_OUTS
WHERE ANIMAL_ID NOT IN (SELECT ANIMAL_ID FROM ANIMAL_INS);

 

 

반응형

댓글