-
<프로그래머스> 오랜 기간 보호한 동물(1)코딩테스트/SQL 코딩테스트 2023. 12. 19. 16:44
출처 : https://school.programmers.co.kr/learn/courses/30/lessons/59044
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
- 문제 요구사항
- 아직 입양을 가지못한 동물 중 가장 오래 보호소에 있었던 동물 3마리의 이름, 보호시작일을 조회
- 결과는 보호시작일을 기준으로 조회함
ANIMAL_INS(동물보호소에 들어온 동물 정보) 테이블과 ANIMAL_OUTS(동물보호소에서 입양보낸 동물의 정보) 테이블을 조인해야함
아직 입양을 가지 못한 동물을 조회해야하기 때문에 INS에는 있는데 OUTS에는 없는 데이터를 조회해야한다.
따라서 INS를 왼쪽에 두고 LEFT OUTER JOIN을 사용하여 조인한다. 그리고 OUTS의 특정 컬럼 데이터가 NULL인 데이터를 조회한다
가장 오래 있었던 동물을 알아내기 위해서 INS의 DATETIME을 기준으로 정렬하고
MySQL의 경우 LIMIT구문, Oracle의 경우에는 ROWNUM을 이용하여 3개의 데이터만을 출력한다.
1) Oracle
SELECT NAME, DATETIME FROM ( SELECT A.NAME, A.DATETIME FROM ANIMAL_INS A LEFT OUTER JOIN ANIMAL_OUTS B ON A.ANIMAL_ID = B.ANIMAL_ID WHERE B.DATETIME IS NULL ORDER BY A.DATETIME ) WHERE ROWNUM <= 3
서브쿼리로 목표하는 데이터를 불러오고 ROWNUM <=3을 이용해 상위 3개 즉 가장 오래된 3마리의 동물 데이터를 조회함
2) MySQL
SELECT A.NAME, A.DATETIME FROM ANIMAL_INS A LEFT OUTER JOIN ANIMAL_OUTS B ON A.ANIMAL_ID = B.ANIMAL_ID WHERE B.DATETIME IS NULL ORDER BY A.DATETIME LIMIT 3;
'코딩테스트 > SQL 코딩테스트' 카테고리의 다른 글
<프로그래머스> 상품 별 오프라인 매출 구하기 (0) 2023.12.19 <프로그래머스> 카테고리 별 도서 판매량 집계하기 (0) 2023.12.19 <프로그래머스> 자동차 종류 별 특정 옵션이 포함된 자동차 수 구하기 (0) 2023.12.19 <프로그래머스> 인기있는 아이스크림 (0) 2023.12.19 <프로그래머스> 12세 이하인 여자 환자 목록 출력하기 (0) 2023.12.19 - 문제 요구사항