https://school.programmers.co.kr/learn/courses/30/lessons/59044
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
테이블:
ANIMAL_INS 보호소에 있던 동물 테이블
ANIMAL_OUTS 입양간 동물 테이블
아직 입양을 못 간 동물 중, 가장 오래 보호소에 있었던 동물 3마리의 이름과 보호 시작일을 조회하는 SQL문을 작성해주세요. 이때 결과는 보호 시작일 순으로 조회해야 합니다.
-- 코드를 입력하세요
SELECT NAME
, DATETIME
FROM (SELECT A.NAME, A.DATETIME
FROM ANIMAL_INS A
LEFT JOIN ANIMAL_OUTS B ON B.ANIMAL_ID = A.ANIMAL_ID
WHERE B.ANIMAL_ID IS NULL
ORDER BY DATETIME)
WHERE ROWNUM <= 3
ORACLE은 테이블 명칭쓸 때 AS를 안쓰고
LEFT JOIN을 하고 NULL인 것만 가져오면
보호소 동물 중 입양되지않은 동물들만 가져온다
처음엔 서브쿼리를 안썼더니
결과값은 맞는데 틀렸다고 떠서 이유를 알아보니
ROWNUM이 데이터가 정렬되기 전이라서였다
그래서 서브쿼리 안에서 DATETIME으로 한번 정렬을 해주고
ROWNUM <= 3을 해주면 원하는 값 출력 완료~
'sql' 카테고리의 다른 글
ORACLE Join (0) | 2023.06.20 |
---|