题目分析:
用户表: 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) 是该表的主键。
编写解决方案统计出各赛事的用户注册百分率,保留两位小数。
返回的结果表按 percentage
的 降序 排序,若相同则按 contest_id
的 升序 排序。
题目分析:
经过分析可以得到本题主要查询Register表中的数据,对于Users表,只需要借助其中user_id的数量即可。
根据分组查询,查询出Register表中每一个contest_id对应的user_id的数量,之后将此数量除以Users表中的user_id的数量即可以得出各赛事的用户注册百分率,保留两位小数。
MYSQL解法:
select contest_id,round(100*count(user_id)/(select count(*) from Users),2) as percentage
from Register
group by contest_id
order by percentage desc,contest_id;