Skip to main content
Back to problems
#1633
Easy Database

Percentage of users attended a contest

Database
60.0% acceptance
Feb 27, 2026
1180
107
Table: Users +-------------+---------+ | Column Name | Type | +-------------+---------+ | user_id | int | | user_name | varchar | +-------------+---------+ user_id is the primary key (column with unique values) for this table. Each row of this table contains the name and the id of a user. Table: Register +-------------+---------+ | Column Name | Type | +-------------+---------+ | contest_id | int | | user_id | int | +-------------+---------+ (contest_id, user_id) is the primary key (combination of columns with unique values) for this table. Each row of this table contains the id of a user and the contest they registered into. Write a solution to find the percentage of the users registered in each contest rounded to two decimals. Return the result table ordered by percentage in descending order. In case of a tie, order it by contest_id in ascending order. The result format is in the following example.

Solution

SQL
LeetCode
solution.sql
#
# Table: Users
# +-------------+---------+
# | Column Name | Type    |
# +-------------+---------+
# | user_id     | int     |
# | user_name   | varchar |
# +-------------+---------+
# user_id is the primary key (column with unique values) for this table.
# Each row of this table contains the name and the id of a user.
# Table: Register
# +-------------+---------+
# | Column Name | Type    |
# +-------------+---------+
# | contest_id  | int     |
# | user_id     | int     |
# +-------------+---------+
# (contest_id, user_id) is the primary key (combination of columns with unique values) for this table.
# Each row of this table contains the id of a user and the contest they registered into.
# Write a solution to find the percentage of the users registered in each contest rounded to two decimals.
# Return the result table ordered by percentage in descending order. In case of a tie, order it by contest_id in ascending order.
# The result format is in the following example.
# Example 1:
# Input:
# Users table:
# +---------+-----------+
# | user_id | user_name |
# +---------+-----------+
# | 6       | Alice     |
# | 2       | Bob       |
# | 7       | Alex      |
# +---------+-----------+
# Register table:
# +------------+---------+
# | contest_id | user_id |
# +------------+---------+
# | 215        | 6       |
# | 209        | 2       |
# | 208        | 2       |
# | 210        | 6       |
# | 208        | 6       |
# | 209        | 7       |
# | 209        | 6       |
# | 215        | 7       |
# | 208        | 7       |
# | 210        | 2       |
# | 207        | 2       |
# | 210        | 7       |
# +------------+---------+
# Output:
# +------------+------------+
# | contest_id | percentage |
# +------------+------------+
# | 208        | 100.0      |
# | 209        | 100.0      |
# | 210        | 100.0      |
# | 215        | 66.67      |
# | 207        | 33.33      |
# +------------+------------+
# Explanation:
# All the users registered in contests 208, 209, and 210. The percentage is 100% and we sort them in the answer table by contest_id in ascending order.
# Alice and Alex registered in contest 215 and the percentage is ((2/3) * 100) = 66.67%
# Bob registered in contest 207 and the percentage is ((1/3) * 100) = 33.33%
#

# Write your MySQL query statement below

SELECT r.contest_id,
  ROUND(100.0 * COUNT(r.user_id) / (SELECT COUNT(*) FROM Users), 2) AS percentage
FROM Register r
GROUP BY r.contest_id
ORDER BY percentage DESC, r.contest_id ASC;