[SQL sp] Hackerrank Olivander's Inventory

이찬행·2022년 5월 3일
0

SQL-문제풀이

목록 보기
5/7

문제

Hackerrank 문제 링크

문제 풀이

  • 같은 age, power를 가진 지팡이 중에서 minimum amount of coins needed 를 찾아야 하는 것이 핵심.
  • window function을 이용해서 풀이
  1. window function에서 랭크를 이용해서, 제일 낮은 랭크 값을 가질 수도 있고
  2. min function을 이용할 수 있음

코드

SELECT id, age, coins_needed, power
FROM (SELECT WANDS.id, WANDS_PROPERTY.age,
			 WANDS.coins_needed, WANDS.power,
             MIN(WANDS.coins_needed) OVER(PARTITION BY WANDS.power, WANDS_PROPERTY.age) AS c1
      FROM WANDS
      JOIN WANDS_PROPERTY
      ON WANDS.code=WANDS_PROPERTY.code
      WHERE WANDS_PROPERTY.is_evil=0
     ) AS TEMP #subquery 에서 먼저 조건에 맞는 window funtion 활용
WHERE TEMP.coins_needed=TEMP.c1 # minimum amounnt of coins needed 만 선택
ORDER BY 4 DESC, 2 DESC
;
profile
what's on your mind?

0개의 댓글