반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 백트래킹
- sql
- snowflake
- dbeaber
- 데이터분석
- AWS
- 문제풀이
- 결합인덱스조건
- 인덱스
- Index
- HackerRank
- 조인
- MySQL
- 자료구조
- 개발
- dfs
- 인덱스튜닝
- DB
- S3
- 코딩
- 율코딩
- 쿼리
- 알고리즘
- Join
- 결합인덱스란
- Oracle
- 데이터베이스
- 오라클
- 백준
- storage_integration
Archives
- Today
- Total
율코딩
[MySQL/HackerRank] Top Competitors 문제풀이 본문
반응형
https://www.hackerrank.com/challenges/full-score/problem
Top Competitors | HackerRank
Query a list of top-scoring hackers.
www.hackerrank.com

만점을 받은 challenge가 2개 이상인 해커를 구하는 문제이다.
그리고 만점 받은 전체 challenge 의 수로 정렬해야한다. ( 개수가 같을 경우, hacker_id로 오름차순으로 정렬하기)
우선,
1. Submissions table에 3개의 테이블을 조인을 하고 Submissions 테이블에서 score가 만점인 데이터만 가져오도록 where에 조건을 걸었다.
2. Group by 로 hacker_id로 묶어줘야하는데 h.name도 출력해야하기 때문에 h.name도 같이 묶는다.
(SELECT 절에는 GROUP BY에 쓰인 column만 사용가능하다.)
3. Having 절을 이용하여 만점알 받은 challenge가 2개 이상이도록 조건을 추가해주었다.
4. 그 다음, COUNT(hacker_id), hacker_id로 정렬해주었다.
풀이
SELECT h.hacker_id, h.name
FROM Submissions as s
INNER JOIN Hackers as h On s.hacker_id = h.hacker_id
INNER JOIN Challenges AS c ON c.challenge_id = s.challenge_id
INNER JOIN difficulty AS d ON d.difficulty_level = c.difficulty_level
WHERE d.score = s.score
GROUP BY h.hacker_id, h.name
HAVING COUNT(s.hacker_id ) > 1
ORDER BY count(s.hacker_id) desc, s.hacker_id asc
반응형
'SQL > HackerRank' 카테고리의 다른 글
[MySQL/HackerRank] Contest Leaderboard 문제 풀이 (0) | 2022.05.22 |
---|---|
[MySQL/HackerRank] Challenges 문제 풀이 (0) | 2022.05.22 |
[MySQL/HackerRank] Ollivander's Inventory 문제풀이 (0) | 2022.05.22 |
[MySQL/HackerRank] Binary Tree Nodes 문제풀이 (0) | 2022.05.13 |
[MySql/HackerRank] Occupations 문제 풀이 (0) | 2022.05.12 |
Comments