Basic Join인데 1시간 헤매고 구글링해서 풀었다.
프로그래머스보다 어려웠다고 생각한다
- 보고싶은 컬럼은
id
,age
,coins_needed
,power
is_evil
= 0(age, power)
가 같은 wand 중에서coins_needed
의 최솟값을 고른다
3.1GROUP BY
를 이용!- 정렬조건
4.1power
내림차순
4.2power
가 같다면age
내림차순
조건2, 3을 만족하는 T
라는 임시테이블을 만들고, T
와 Wands
를 조인하여 컬럼을 조회한다.
select Wands.id, T.age, T.min_coins, T.power
from (
select WP.code as code, WP.age as age, W.power as power, min(W.coins_needed) as min_coins
from Wands as W join Wands_Property as WP on W.code = WP.code
where WP.is_evil = 0
group by WP.code, WP.age, W.power
) as T join Wands on T.code = Wands.code and T.min_coins = Wands.coins_needed
order by T.power desc, T.age desc