[LeetCode-SQL 50] 1633. Percentage of Users Attended a Contest

코린이·2025년 6월 2일

SQL 문제 풀이 (MySQL)

목록 보기
64/96

❓ 문제

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
;

🔗 Reference

https://leetcode.com/problems/percentage-of-users-attended-a-contest/?envType=study-plan-v2&envId=top-sql-50

0개의 댓글