题解 | #统计每个学校各难度的用户平均刷题数#
统计每个学校各难度的用户平均刷题数
https://www.nowcoder.com/practice/5400df085a034f88b2e17941ab338ee8
select up.university, qd.difficult_level, convert( Count(qpd.id) / Count(DISTINCT up.id), decimal(15, 4) ) avg_answer_cnt from question_practice_detail qpd inner join user_profile up on up.device_id = qpd.device_id inner join question_detail qd on qd.question_id = qpd.question_id GROUP BY up.university, qd.difficult_level
解题思路:
1.先联表,联表是为了看到最后联表后整体的结果表
2.对联表后的结果表进行分组查询,按照各学校各难度进行分组
3.分组后,我们可以通过使用函数来计算题目数、用户数,通过除法计算得到平均刷题数
函数使用释义:
Count(qpd.id):对联表后答题详情表的记录数进行计数,可得到该学校该难度下该表的记录数,如北京大学、hard难度,那么该数得到为2
Count(DISTINCT up.id):对联表后用户信息表进行去重计数,因为联表可能导致相同的用户出现多条,这里需要去重,如北京大学,该数得到为2
convert(
数值,
decimal(15, 4)
)
这个为对数值取4位小学
谢谢观看!