안녕하십니까 다제입니다.
오늘은 SQL 복습 3일차 입니다. 오늘도 HackerRank에서 문제를 풀어보았는데요
함께 살펴보도록 하시죠!
5. Weather Observation Station 20
- 문제의 해석 : 간단히 중간값을 구하라 문제입니다.
- 선정한 이유 : NySQL에서는 아직 median함수가 없습니다. 이제 median 형식을 이용하여 접근을 해야하기에 문제를 선정하였습니다.
- 접근방식 : percent_rnak()를 활용하여 풀었습니다.
- 링크 : https://www.hackerrank.com/challenges/weather-observation-station-20/problem
- 코드
SELECT ROUND(LAT_N,4)
FROM(SELECT LAT_N, PERCENT_RANK() OVER (ORDER BY LAT_N) percent
FROM STATION) a
WHERE percent = 0.5;
6. Top Competitors
- 문제의 해석 : 코딩테스트 제출자 중 full score 맞은 문제가 한개보다 많은 (2개 이상) 인 참가자의 hacker_id와, name을 출력하라는문제입니다.
여기서 full score가 무엇이지? 고민할 수 있는데, 각 문제별도 주어진 점수표가 full score가 됩니다.
- 선정한 이유 : join에 대한 훈련을 할 수 있기때문입니다.
- 접근방식 :
1) submissions table을 base로 필요한 정보를 담고 있는 테이블들을 join합니다.
2) 제출한 문제의 full score 를 알기 위해 difficuly 테이블의 score 정보가 필요합니다.
3) difficulty level 정보가 있어야 full score 를 연결할 수 있고, 그 정보는 Challenges 테이블에 있습니다.
4) hacker의 이름을 출력하기 위해 Hackers 테이블이 필요합니다.
- 링크 : https://www.hackerrank.com/challenges/full-score/problem
- 코드
select h.hacker_id, h.name
from submissions s
inner join challenges c
on s.challenge_id = c.challenge_id
inner join difficulty d
on c.difficulty_level = d.difficulty_level
inner join hackers h
on s.hacker_id = h.hacker_id
where s.score = d.score and c.difficulty_level = d.difficulty_level
group by h.hacker_id, h.name
having count(s.hacker_id) > 1
order by count(s.hacker_id) desc, s.hacker_id asc
오늘도 두 문제를 함께 풀어보았는데도 오늘은 연습이 조금 필요한 거 같네요.. 생각이 잘 나지 않아서 고생했습니다. ㅠㅠ
진짜 풀기 싫었는데 꾹 참고 성실히 풀었습니다.
여러분과도 함께 약속한것이니까요!
오늘도 글을 읽어주셔서 감사합니다.
'Code > SQL' 카테고리의 다른 글
[HackerRank] SQL 코딩테스트 준비 5day(feat. tips 및 복습) (0) | 2021.11.02 |
---|---|
[HackerRank] SQL 코딩테스트 준비 4day(feat. tips 및 복습) (0) | 2021.10.29 |
[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 |