Ollivander's Inventory
/*
the minimum number of gold galleons needed to buy each non-evil wand of high power and age.
1. Write a query to print the id, age, coins_needed, and power of the wands that Ron's interested in
2. sorted in order of descending power
3. If more than one wand has same power, sort the result in order of descending age.
*/
select w.id, p.age, w.coins_needed, w.power
from Wands as w
join Wands_Property as p on (w.code = p.code)
where p.is_evil = 0 and w.coins_needed =
(select min(coins_needed)
from Wands as w1
join Wands_Property as p1 on (w1.code = p1.code)
where w1.power = w.power and p1.age = p.age)
order by w.power desc, p.age desc
문제에 1대 1 매핑의 의미를 이해해야 한다.
한 code에 매핑되는 매핑되는 age는 한 개다.
서브 쿼리에서 메인 쿼리에서 조인한 테이블의 컬럼을 사용했다.
이러한 방법으로 같은 power와 같은 age일 때의 minimum coins_needed를 구하여, 그것을 다시 where문의 조건으로 사용하였다.
문제의 조건이 애매해하여 discussions을 읽어보고 그곳에 있는 해답으로 이해했다.
같은 조건의 power와 age가 존재할 때, minimum coins_needed가 조건인지 몰랐다.
1시간이나 시간을 썼는데 시간이 아깝다.
'섭섭의 공부 > SQL' 카테고리의 다른 글
[22.02.08] HackerRank 문제 풀이 (0) | 2022.02.08 |
---|---|
[22.02.03] HackerRank 문제 풀이 (0) | 2022.02.03 |
[22.01.16] HackerRank 문제 풀이 (0) | 2022.01.16 |
[22.01.15] HackerRank 문제 풀이 (0) | 2022.01.15 |
[22.01.12] HackerRank 문제 풀이 (0) | 2022.01.12 |