1633. 各赛事的用户注册率

简介: 1633. 各赛事的用户注册率

说在前面

🎈不知道大家对于算法的学习是一个怎样的心态呢?为了面试还是因为兴趣?不管是出于什么原因,算法学习需要持续保持。

题目描述

用户表: 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%

解题思路

该查询语句主要包含以下几个部分:

  • SELECT:用于指定要查询的列,包括比赛编号 contest_id 和比赛报名人数在总用户数中的百分比 percentage。
  • ROUND:用于将计算出的百分比结果保留两位小数。
  • COUNT:用于统计每个比赛的报名人数。
  • SELECT COUNT(*) FROM users:用于查询用户总数,并将其作为分母计算每个比赛的报名人数在总用户数中的百分比。
  • GROUP BY:用于将查询结果按照比赛编号进行分组。
  • ORDER BY:用于按照百分比和比赛编号对查询结果进行排序,其中 DESC 表示降序排列。

AC代码

# Write your MySQL query statement below
select contest_id , round(count(user_id) * 100/ (select count(*) from users), 2) percentage 
from Register
group by contest_id
order by percentage desc, contest_id

公众号

关注公众号『前端也能这么有趣』,获取更多有趣内容。

说在后面

🎉 这里是 JYeontu,现在是一名前端工程师,有空会刷刷算法题,平时喜欢打羽毛球 🏸 ,平时也喜欢写些东西,既为自己记录 📋,也希望可以对大家有那么一丢丢的帮助,写的不好望多多谅解 🙇,写错的地方望指出,定会认真改进 😊,偶尔也会在自己的公众号『前端也能这么有趣』发一些比较有趣的文章,有兴趣的也可以关注下。在此谢谢大家的支持,我们下文再见 🙌。

目录
相关文章
|
5月前
|
数据可视化 机器人
使用RPA轻松实现淘宝评价自动回复
八爪鱼RPA是一款经验丰富的自动化流程处理软件,它可以模拟人在电脑上的操作,按照预设的规则自动执行任务。对于淘宝评价自动回复的场景,可以帮助卖家自动获取评价信息,并根据预设的关键词进行智能化回复。
|
11月前
|
算法 Python
算法创作|模拟商品加入购物车并结算价钱问题解决方法
算法创作|模拟商品加入购物车并结算价钱问题解决方法
71 0
算法创作|模拟商品加入购物车并结算价钱问题解决方法
|
小程序 数据挖掘
如何提高用户留存?
用户留存是一个很关键的指标,跟产品价值具有相关性。有留存说明用户认可了产品带给他的价值。应该说只有这个指标数据上去了,做推广才有意义。
163 0
如何提高用户留存?
一对一直播源码,提升用户注册率的常用小技巧
一对一直播源码,提升用户注册率的常用小技巧
|
存储 搜索推荐 算法
复盘6月,从常规到大促怎样分分钟搭建个性化会场
除了搜索,个性化推荐已成为电商行业的标配。那么,个性化推荐怎样快速赋予算法能力,挖掘转化增长新机遇?常规和大促期间有哪些操作技巧?
1272 0
复盘6月,从常规到大促怎样分分钟搭建个性化会场
|
开发者
参与开发者移动端需求调研问卷,赢取100元话费、积分等好礼!
参与开发者移动端需求调研问卷,赢取100元话费、积分等好礼!
在千牛卖家中心如何发布淘宝宝贝?大概需要花费多长时间?
从上述手工发布宝贝的步骤,可以看出,在千牛卖家中心手工发布宝贝大概需要20-40分钟,那么,如果使用大淘营淘宝宝贝复制软件来一键复制宝贝需要多长时间呢
|
自然语言处理 机器人
如何提升云小蜜知识解决率
在XXX项目中,配置知识库时,发现问题的解决率在前期一直不搞。怎么提高解决率,是所有项目成员一直渴望解决的痛点。 在经历多次调整和多轮标注,总结出一套行之可用的方法论,依照此方法,解决率持续提高。下面依照项目总结出的方法分享给大家。
如何提升云小蜜知识解决率
|
存储 运维 负载均衡
如何保障“双11”期间亿万买家和卖家愉快地聊天
在刚刚过去的 2020 双 11 购物节,Tablestore 第一次全面支持集团 IM(钉钉、手淘&天猫&千牛客服聊天、饿了么等)并平稳度过,保障亿万买家和卖家之间更为顺畅的交流。本文将介绍钉钉 IM 存储架构、表格存储 Tablestore 为了满足迁移在稳定性、功能、性能上做的一系列工作。
4996 0
如何保障“双11”期间亿万买家和卖家愉快地聊天
|
小程序
怎么让用户留些来还总想着你,这4招教你快速提高小程序留存率!
到底有没有可能,让用户一直心心念念你的产品,就算离开了也会再回来,从而提升自己的小程序的留存率呢?
1014 0