当前位置: 首页> 娱乐> 影视 > 网页制作教程 基础_建企业网站一般需要多少钱_蚁百杭州网站seo优化_互联网舆情信息

网页制作教程 基础_建企业网站一般需要多少钱_蚁百杭州网站seo优化_互联网舆情信息

时间:2025/7/14 22:55:02来源:https://blog.csdn.net/2302_77975940/article/details/142871626 浏览次数:0次
网页制作教程 基础_建企业网站一般需要多少钱_蚁百杭州网站seo优化_互联网舆情信息

#该题目来源于力扣:

1633. 各赛事的用户注册率 - 力扣(LeetCode)

题目要求:

用户表: Users+-------------+---------+
| Column Name | Type    |
+-------------+---------+
| user_id     | int     |
| user_name   | varchar |
+-------------+---------+
user_id 是该表的主键(具有唯一值的列)。
该表中的每行包括用户 ID 和用户名。注册表: Register+-------------+---------+
| Column Name | Type    |
+-------------+---------+
| contest_id  | int     |
| user_id     | int     |
+-------------+---------+
(contest_id, user_id) 是该表的主键(具有唯一值的列的组合)。
该表中的每行包含用户的 ID 和他们注册的赛事。编写解决方案统计出各赛事的用户注册百分率,保留两位小数。返回的结果表按 percentage 的 降序 排序,若相同则按 contest_id 的 升序 排序。返回结果如下示例所示。示例 1:输入:
Users 表:
+---------+-----------+
| user_id | user_name |
+---------+-----------+
| 6       | Alice     |
| 2       | Bob       |
| 7       | Alex      |
+---------+-----------+Register 表:
+------------+---------+
| 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       |
+------------+---------+
输出:
+------------+------------+
| contest_id | percentage |
+------------+------------+
| 208        | 100.0      |
| 209        | 100.0      |
| 210        | 100.0      |
| 215        | 66.67      |
| 207        | 33.33      |
+------------+------------+
解释:
所有用户都注册了 208、209 和 210 赛事,因此这些赛事的注册率为 100% ,我们按 contest_id 的降序排序加入结果表中。
Alice 和 Alex 注册了 215 赛事,注册率为 ((2/3) * 100) = 66.67%
Bob 注册了 207 赛事,注册率为 ((1/3) * 100) = 33.33%

思路流程:

这道题的难点在于怎么求百分比。按照题目的要求,我们一定按照对R表的contest_id列分组。但是要求每个人的参赛百分比,我们就需要总人数。如何求取总人数,在U表中给出了人员名单,只要在查询字段输入一个子查询用来查询总人数即可。具体逻辑就是:

COUNT(按照赛事分组后的contest_id列),也就是报名的各赛事人数/COUNT(利用子查询从另一张表中查询出的总人数)=每个赛事参与的人数百分比。

代码实现:

# Write your MySQL query statement below
SELECT 
contest_id,ROUND((COUNT(user_id)/(SELECT COUNT(*) FROM Users))*100,2) percentage 
FROM Register 
GROUP BY contest_id 
ORDER BY percentage DESC,contest_id ASC

关键字:网页制作教程 基础_建企业网站一般需要多少钱_蚁百杭州网站seo优化_互联网舆情信息

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: