https://school.programmers.co.kr/learn/courses/30/lessons/59042
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
📚문제
천재지변으로 인해 일부 데이터가 유실되었습니다. 입양을 간 기록은 있는데, 보호소에 들어온 기록이 없는 동물의 ID와 이름을 ID 순으로 조회하는 SQL문을 작성해주세요.
✏️ 풀이
SELECT O.ANIMAL_ID,O.NAME
FROM ANIMAL_INS I RIGHT JOIN ANIMAL_OUTS O ON I.ANIMAL_ID = O.ANIMAL_ID
WHERE I.DATETIME = NULL
ORDER BY 1
입양 보낸 정보 테이블로 RIGHT JOIN 을 걸면 입양 보낸 정보 테이블의 정보들이 소멸되지 않고 해당 정보를 기준으로 조회 또는 작업이 가능하다.
RIGHT JOIN 을 기준으로 I.DATETIME 이 NULL 이라면 보호소에 온 적없는 ANIMAL_ID 를 찾아낼 수 있다.
의문이 든 점이 RIGHT JOIN 으로 연결한다면 입양을 갔지만 보호소에 들어온 기록이 없는 동물이 ANIMAL_INS 에는 없기때문에 DATETIME 을 기준으로 하지않고 ANIMAL _ID 로 하는것이 더 가독성이 좋지않을까? 생각이 들었다.
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 1
✒️ 회고
- 간단한 문제이긴 하지만 RIGHT,LEFT JOIN 의 개념을 잘 활용해야 풀 수 있는 문제라 블로그에 작성을 해보았다.
'코딩테스트 > SQL' 카테고리의 다른 글
[MySQL]년, 월, 성별 별 상품 구매 회원 수 구하기 (0) | 2025.04.14 |
---|---|
[MySQL] 즐겨찾기가 가장 많은 식당 정보 출력하기 (0) | 2025.04.10 |
[Mysql] 가격대 별 상품 개수 구하기 (0) | 2025.04.07 |
[SQL]NULL 처리하기 (0) | 2025.03.07 |
[SQL]Lv5. 예산이 가장 큰 프로젝트는? (0) | 2025.01.23 |