본문 바로가기
SQL

[SQL] HackerRank로 시작하는 SQL - 7

by 슈퍼닷 2020. 1. 26.
반응형

2020/01/26 - [SQL] - [SQL] HackerRank로 시작하는 SQL - 6

 

[SQL] HackerRank로 시작하는 SQL - 6

2020/01/24 - [SQL] - [SQL] HackerRank로 시작하는 SQL - 5 [SQL] HackerRank로 시작하는 SQL - 5 2020/01/24 - [SQL] - [SQL] HackerRank로 시작하는 SQL - 4 [SQL] HackerRank로 시작하는 SQL - 4 2020/01/22 -..

jogamja.tistory.com

문제주소 :  https://www.hackerrank.com/challenges/challenges/problem

 

Challenges | HackerRank

Print the total number of challenges created by hackers.

www.hackerrank.com

 

 

문제 :  hacker_id, name, 각 학생의 대회 점수 총합을 출력해라. 단, 총점을 기준으로 내림차순으로 정렬하고, 만약 동점이 있을시 hacker_id를 기준으로 정렬해라. 만약, 동점자가 있을때 점수가 최고점이 아닌경우는 결과에서 제외하라.

 

이번 문제를 풀면서 집계 함수는 HAVING 절에서 풀어야된다는걸 알았다.

HAVING절은 WHERE 절과 GROUP BY 가 끝난 Row들에 대해서 적용된다고 한다.

 

그리고 진짜 이문제 덕분에 GROUP BY와 COUNT에 대해 제대로 알게됬음.

SELECT H.HACKER_ID, H.NAME, COUNT(C.CHALLENGE_ID) as IDCNT FROM CHALLENGES C, HACKERS H 
WHERE C.HACKER_ID = H.HACKER_ID GROUP BY H.HACKER_ID, H.NAME, C.HACKER_ID 
HAVING IDCNT = (SELECT COUNT(CHALLENGE_ID) AS CNT FROM CHALLENGES GROUP BY HACKER_ID ORDER BY CNT DESC LIMIT 1) OR IDCNT IN (SELECT sub.C_CNT                                                                         FROM (SELECT COUNT(CHALLENGE_ID) AS C_CNT FROM CHALLENGES GROUP BY HACKER_ID) sub
                        GROUP BY sub.C_CNT
                        HAVING COUNT(sub.C_CNT) = 1)
ORDER BY IDCNT DESC, H.HACKER_ID ASC

 

 

 

 

 

반응형

'SQL' 카테고리의 다른 글

[SQL] HackerRank로 시작하는 SQL - 8  (0) 2020.01.28
[SQL] HackerRank로 시작하는 SQL - 6  (0) 2020.01.26
[SQL] HackerRank로 시작하는 SQL - 5  (0) 2020.01.24
[SQL] PRG's SQL DOCS  (0) 2020.01.24
[SQL] HackerRank로 시작하는 SQL - 4  (0) 2020.01.24

댓글