Ollivander's Inventory | HackerRank
JOIN 문제이다.
해커랭크는 문제 설명이 항상 좀 부족한 것 같다...
문제에는 NON-EVIL인 지팡이를 사는 데 드는 가장 적은 코인 수를 찾되, POWER와 AGE가 큰 지팡이 순으로 정렬하라고 되어있다.
이해가 안 돼서 풀이를 찾아보니, CODE와 POWER로 GROUP을 만들어 각 GROUP의 최소 코인 수를 찾아야 하는 것이었다.
SELECT W.ID, P.AGE, A.COIN, W.POWER
FROM WANDS W
, WANDS_PROPERTY P
, (SELECT CODE, MIN(COINS_NEEDED) AS COIN, POWER
FROM WANDS
GROUP BY CODE, POWER) A
WHERE W.CODE = A.CODE
AND W.POWER = A.POWER
AND W.COINS_NEEDED = A.COIN
AND W.CODE = P.CODE
AND P.IS_EVIL = 0
ORDER BY W.POWER DESC, P.AGE DESC
;