-
MySQL) Ollivander's InventorySQL 2020. 6. 3. 18:41반응형
Ollivander's Inventory
참 어렵지 않은 것 같으면서도 어려운 문제였다. 결론적으로 내 힘으로 풀지 못했다.
같은 코드에서 돈이 최소로 드는 지팡이 중에 힘이 센 순서대로, 연식이 오래된 순서대로 보여주는 쿼리문을 작성하라고 조건이 있는데, 같은 코드에서 돈이 최소인 지팡이만 뽑아내는데 실패했다.
단순히 WANDS와 WANDS_PROPERTY만 INNER JOIN을 통해 엮어주어 실패한 것 같다. ( 아직까지도 조인문을 한번만 이용하고도 풀 수 있는 방법이 있는지 모르겠다. 없을 것 같다..)
구글링을 통해 Self Join을 이용하는 방법을 보았다. Self Join에서 먼저, code와 power 별로 지팡이의 가격이 최저가인 테이블 M을 만들어 주었다. 이후, 원래 테이블인 W와 P 테이블을 조인시켜주어 문제를 해결했다.
문제의 조건에 따라, Table을 만들어 Self Join을 하는 방법도 머릿속에 남겨둬야 겠다..
Query
SELECT id,age,M.coins_needed,M.power FROM (SELECT code, power, MIN(coins_needed) AS coins_needed FROM WANDS GROUP BY code, power) AS M JOIN WANDS AS W ON W.code = M.code AND M.power = W.power AND M.coins_needed = W.coins_needed JOIN WANDS_PROPERTY AS P ON M.code = P.code WHERE P.is_evil =0 ORDER BY W.power desc, P.age desc;
반응형'SQL' 카테고리의 다른 글
MySQL 권한 설정 (0) 2021.04.29 프로그래머스) [SQL 고득점 KIT, JOIN] 없어진 기록 찾기, 있었는데요 없었습니다, 오랜 기간 보호한 동물(1), 보호소에서 중성화한 동물 (0) 2020.06.04 프로그래머스) [SQL 고득점 KIT] 입양 시각 구하기, 중성화여부, 오랜기간 보호한 동물(2), DATETIME에서 DATE로 변환, NULL 처리하기 (0) 2020.06.04 MySQL) Challenges (0) 2020.06.04 MySQL) Top Competitors (0) 2020.06.03