Users
+-------------+---------+
| Column Name | Type |
+-------------+---------+
| user_id | int |
| user_name | varchar |
+-------------+---------+
user_id는 이 테이블의 기본 키(고유 값을 가진 열)입니다.
이 테이블의 각 행에는 사용자의 이름과 아이디가 포함됩니다.
Register
+-------------+---------+
| Column Name | Type |
+-------------+---------+
| contest_id | int |
| user_id | int |
+-------------+---------+
(contest_id, user_id)는 이 테이블의 기본 키(고유 값을 가진 열의 조합)입니다.
이 테이블의 각 행에는 사용자의 ID와 사용자가 등록한 콘테스트가 포함됩니다.
각 콘테스트에 등록한 사용자의 백분율을 소수점 둘째 자리로 반올림하여 구하는 솔루션을 작성합니다.
백분율에 따라 내림차순으로 정렬된 결과 테이블을 반환합니다. 동점인 경우 contest_id를 기준으로 오름차순으로 정렬합니다.
WITH TMP_TB AS ( SELECT COUNT(user_id) AS CNT FROM Users ) SELECT B.contest_id , ROUND(COUNT(A.user_id) / C.CNT * 100, 2) AS percentage FROM Users A JOIN Register B ON A.user_id = B.user_id , TMP_TB C GROUP BY B.contest_id ORDER BY percentage DESC, B.contest_id ;