본문 바로가기
sql

[Oracle] 프로그래머스 : 오랜 기간 보호한 동물(1)

by sozr 2024. 10. 23.

 

 

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