-
[SQL/프로그래머스] 없어진 기록 찾기 (NOT IN, NOT EXISTS)코딩테스트/프로그래머스 2023. 3. 15. 09:22
https://school.programmers.co.kr/learn/courses/30/lessons/59042
천재지변으로 인해 일부 데이터가 유실되었습니다. 입양을 간 기록은 있는데, 보호소에 들어온 기록이 없는 동물의 ID와 이름을 ID 순으로 조회하는 SQL문을 작성해주세요.
즉) ANIMAL_OUTS에는 있는데 ANIMAL_INS에는 없는 데이터를 찾는 문제이다.
📑 1. JOIN 이용
select A.ANIMAL_ID , A.NAME FROM ANIMAL_OUTS A LEFT outer JOIN ANIMAL_INS B ON A.animal_id = B.animal_id where B.animal_id is null ORDER BY A.ANIMAL_ID;
📑 2. NOT IN 이용
NOT IN 서브쿼리 안에서 조회된 데이터가 메인쿼리와 일치하는 경우 NOT IN을 사용하여, 서브퀴리에서 조회 된 데이터를 메인쿼리에서 제외 후 출력한다.
SELECT ANIMAL_ID, NAME FROM ANIMAL_OUTS WHERE ANIMAL_ID NOT IN ( SELECT ANIMAL_ID FROM ANIMAL_INS ) ORDER BY ANIMAL_ID;
📑 3. NOT EXISTS 이용
NOT EISTS 앞에 메인 쿼리의 컬럼은 필요하지 않고 WHERE NOT EXISTS로 작성 . 또한 서브쿼리에서 어떤 데이터를 출력할지는 중요치 않음 ( 그냥 데이터가 있냐 없냐만 판단하면 됨) .
따라서 서브쿼리에 데이터가 있으면 NOT EXISTS를 사용해서 서브쿼리에 조회되는 값을 제외 후 출력하게 된다.
SELECT ANIMAL_ID, NAME FROM ANIMAL_OUTS ao WHERE NOT EXISTS ( SELECT 1 FROM ANIMAL_INS ai where ai.ANIMAL_ID = ao.ANIMAL_ID ) ORDER BY ANIMAL_ID;
반응형'코딩테스트 > 프로그래머스' 카테고리의 다른 글
[SQL/프로그래머스] 헤비 유저가 소유한 장소 , 다중행 서브쿼리, 인라인뷰, 분석함수 (0) 2023.03.16 [SQL/프로그래머스] 오랜 기간 보호한 동물(1) rownum, rank() (0) 2023.03.15 [SQL/프로그래머스] 조건에 맞는 회원수 구하기, 특정 날짜 조건 주기 (0) 2023.01.20 [SQL/프로그래머스] 경기도에 위치한 식품창고 목록 출력하기, CASE (0) 2023.01.17 [프로그래머스/sql] 재구매가 일어난 상품과 회원 리스트 구하기 (0) 2023.01.16