1633. 各赛事的用户注册率 - 力扣(LeetCode)
要统计出各赛事的用户注册百分比,我们首先需要做几个步骤:
-
获取每个赛事的总用户数:我们可以从
Register
表中找到每个contest_id
中唯一的user_id
数量。 -
获取所有用户的总数:我们从
Users
表中获取用户的总数。 -
计算每个赛事的注册百分比:用每个赛事的注册用户数除以总用户数,乘以 100,得出百分比。
-
保留两位小数并排序:按照百分比降序排序,若相同则按
contest_id
升序排序。
基于这些步骤,下面是 SQL 查询的解决方案:
SELECT
contest_id,
ROUND(COUNT(DISTINCT r.user_id) * 100.0 / (SELECT COUNT(*) FROM Users), 2) AS percentage
FROM
Register r
GROUP BY
contest_id
ORDER BY
percentage DESC, contest_id ASC;
解释:
-
COUNT(DISTINCT r.user_id)
计算每个赛事的独立用户注册数。 -
(SELECT COUNT(*) FROM Users)
计算总用户数。 -
计算百分比并使用
ROUND
函数将结果保留两位小数。 -
最后按照
percentage
降序排序,若百分比相同则按contest_id
升序排序。
这段 SQL 查询能够返回按要求排序并计算用户注册百分比的结果。