안녕하십니까 다제입니다.
오늘은 SQL 복습 5일차 입니다. 오늘도 HackerRank에서 문제를 풀어보았는데요
함께 살펴보도록 하시죠!
- 문제의 해석 : 해리포터와 친구들은 찰리의 오래되고 부셔진 지팡이를 교체하기 위해 론과 올리벤더 지팡이 가게를 방문했다. 헤르미온느는 지팡이를 고르는 최선의 방법으로서 non-evil 지팡이이면서 높은 Power와 Age 특성을 갖는 지팡이를 사기 위해 필요한 최소한의 돈(gold galleons)을 고르는 방법을 제안했다. 이 방법을 적용했을 때, 론이 관심있어 할 만한 지팡이의 id, age, coins_needed, power 값들을 출력해라. 이 때 1차적으로 정렬 기준은 power 기준으로 내림차순 정렬하며, 동일한 power 값이 있을 때는 age 값을 기준으로 내림차순 정렬해라.
- 선정한 이유 : join에 대한 훈련을 할 수 있기때문입니다.
- 접근방식 :
- is_evil=0 값인 non-evil 지팡이들만 골라야 합니다.
- Age, Power 값이 각각 같은 지팡이들 중에서 coins_needed 값을 최소로 하는 지팡이를 골라야 합니다.
- 2개의 정렬 기준을 만족시켜야 합니다.
SELECT W.id, P.age, W.coins_needed, W.power
FROM Wands W
INNER JOIN Wands_Property P
ON W.code = P.code WHERE P.is_evil = 0 AND W.coins_needed = (SELECT MIN(W1.coins_needed)
FROM Wands W1 INNER JOIN Wands_Property P1
ON W1.code = P1.code WHERE P1.is_evil = 0 AND W1.power = W.power AND P1.age = P.age)
ORDER BY W.power DESC, P.age DESC
8. Challenges
- 문제의 해석 : 서브쿼리를 이용한 문제
- 선정한 이유 : 너무 어렵다..
- 접근방식 : 너무 어려워서 내일 다시 풀어볼 예정
- 코드
SELECT Hackers.hacker_id, Hackers.name, COUNT(*) AS challenges_created
FROM Hackers
INNER JOIN Challenges
ON Hackers.hacker_id = Challenges.hacker_id
GROUP BY Hackers.hacker_id, Hackers.name
HAVING challenges_created IN
(SELECT sub2.challenges_created FROM (SELECT hacker_id, COUNT(*) AS challenges_created FROM Challenges
GROUP BY Challenges.hacker_id)
sub2 GROUP BY sub2.challenges_created HAVING COUNT(*) = 1)
OR challenges_created = (SELECT MAX(sub1.challenges_created)
FROM (SELECT COUNT(*) AS challenges_created FROM Challenges GROUP BY Challenges.hacker_id) sub1) ORDER BY challenges_created DESC, Hackers.hacker_id
오늘 풀었던 문제는 다시 풀었는데 너무 어려워서 저녁에 다시 복습을 해보아야할 것 같습니다.
오늘도 글을 읽어주셔서 감사합니다.
출처: https://daje0601.tistory.com/297 [코딩일기]
'Code > SQL' 카테고리의 다른 글
[HackerRank] SQL 코딩테스트 준비 4day(feat. tips 및 복습) (0) | 2021.10.29 |
---|---|
[HackerRank] SQL 코딩테스트 준비 3day(feat. tips 및 복습) (0) | 2021.10.20 |
[HackerRank] SQL 코딩테스트 준비 2day(feat. tips 및 복습) (0) | 2021.10.19 |
[HackerRank] SQL 코딩테스트 준비 1day(feat. tips 및 복습) (0) | 2021.10.18 |
[SQL] all? 너는 누구? (feat. MySQL, pgSQL) (0) | 2021.10.14 |