Notice
Recent Posts
Recent Comments
Link
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
Tags more
Archives
Today
Total
관리 메뉴

데이터 분석

프로그래머스 - 오랜 기간 보호한 동물(1) (RANK) 본문

SQL/프로그래머스 코딩

프로그래머스 - 오랜 기간 보호한 동물(1) (RANK)

시니조 2023. 2. 26. 23:17
  • RANK함수
  • JOIN

 

 

풀이 (ORACLE)

일단 아직 입양 못간 동물을 출력한다.

SELECT *
FROM ANIMAL_INS INS LEFT OUTER JOIN ANIMAL_OUTS OUTS
ON INS.ANIMAL_ID = OUTS.ANIMAL_ID
WHERE OUTS.ANIMAL_ID IS NULL
;

ANIMAL_INS 테이블을 좌측에 두고 ANIMAL_OUTS 테이블을 우측에 붙여 우측에 NULL값인 데이터만 가져온다.

 

그 후,

SELECT INS.NAME, INS.DATETIME, RANK() OVER(ORDER BY INS.DATETIME) AS RANK
FROM ANIMAL_INS INS LEFT OUTER JOIN ANIMAL_OUTS OUTS
ON INS.ANIMAL_ID = OUTS.ANIMAL_ID
WHERE OUTS.ANIMAL_ID IS NULL
ORDER BY DATETIME

DATETIME으로 정렬한 후 RANK함수를 이용해 순위를 붙인다.

 

SELECT NAME, DATETIME
FROM (
    SELECT INS.NAME, INS.DATETIME, RANK() OVER(ORDER BY INS.DATETIME) AS RANK
    FROM ANIMAL_INS INS LEFT OUTER JOIN ANIMAL_OUTS OUTS
    ON INS.ANIMAL_ID = OUTS.ANIMAL_ID
    WHERE OUTS.ANIMAL_ID IS NULL
    ORDER BY DATETIME
    )
WHERE RANK <= 3
;

이 테이블을 가져와서 가장 오래 된 3번째 까지의 데이터를 추출한다.

 

https://school.programmers.co.kr/learn/courses/30/lessons/59044