题解 | #统计每个学校各难度的用户平均刷题数#

统计每个学校各难度的用户平均刷题数

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位小学

谢谢观看!

全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务