https://www.hackerrank.com/challenges/harry-potter-and-wands/problem?isFullScreen=true
해르미온느가 지팡이 고르는 걸 도와주는 문제
힘DESC, 나이DESC, 가격 제일 낮은 것을 제시해 줘야 됨.
SELECT w.id, wp.age, w.coins_needed, w.power
FROM Wands w
INNER JOIN Wands_Property wp
ON w.code = wp.code
WHERE 1=1
AND (wp.age,w.power,w.coins_needed) IN (
SELECT wp1.age, w1.power, MIN(w1.coins_needed)
FROM Wands w1
INNER JOIN Wands_Property wp1
ON w1.code = wp1.code
WHERE 1=1
AND wp1.is_evil=0
GROUP BY wp1.age, w1.power
)
ORDER BY
w.power DESC,
wp.age DESC
아놔 ㅠㅠㅠ해커랭커 CTE 안되는거 깜빡하고 CTE로 풀고 있었다 ... 쉬방
WIHT choice AS(
SELECT
w.id,
wp.age,
w.coins_needed,
w.power,
ROW_NUMBER() OVER(PARTITION BY wp.age, w.power ORDER BY w.coins_needed) AS rank
FROM Wands w
INNER JOIN Wands_Property wp
ON w.code=wp.code
WHERE 1=1
AND wp.is_evil = 0
)
SELECT id, age, coins_needed, power
FROM choice
WHERE 1=1
AND rank = 1
ORDER BY
power DESC,
age DESC
이후 나는 서브쿼리를 사용하여 진행했다.
IN 연산자를 이용해 서브쿼리에서 나오는 값들을 필터링함.
나중에 문제를 풀 때는 아래처럼 문제를 정리해보는 습관을 갖어보자.
non_evil인 지팡이에서 같은 나이, 같은 힘을 가진 지팡이들 중에서 가장 저렴한 지팡이를 출력하시오. 출력을 할 때는 지팡이의 힘으로 내림차순 정렬을 하고, 힘을 같을 시에는 나이를 내림차순 정렬을 하시오.