题解 | #统计每个用户的平均刷题数#

统计每个用户的平均刷题数

http://www.nowcoder.com/practice/f4714f7529404679b7f8909c96299ac4

解题思路:

写一下这种题的本质 看似是查询三个表,其实是查询一个表,只需要把表通过key进行连接即可

题目分析:

山东大学的用户在不同难度下的平均答题题目数

限制条件:

  1. 山东大学(where university="山东大学")
  2. 不同难度(group by question_level)

联表操作

联表分为内联,外联和交叉联主要使用内联方式形式为:

inner join 表名 as 别名
on (+条件)表名1.key=表名2.key

计算平均答题题目数

要使用distinct关键字去掉相同的id(题目数量)/((distinct)device_id数量)

# 山东大学
# 不同难度
# 平均答题题目数(题目数量/用户数量)
# 表名                       别名            key
# user_profile               up             device_id,  answer_cnt
# question_practice_detail   qpd            device_id,question_id
# question_detail            qd             question_id question_level


select university,difficult_level,
COUNT(answer_cnt)/count(distinct qpd.device_id) as avg_answer_cnt
from question_practice_detail as qpd
#加入表user_profile
left join user_profile as up
on qpd.device_id=up.device_id
#加入表question_detail
left join question_detail as qd
on qpd.question_id=qd.question_id

where university="山东大学"
group by difficult_level
全部评论
你这么写不行,虽然结果一样,但是left join后跟了where的话,就是内连接了,恰好这道题是要内连接的,否则你这个就报错了
2 回复 分享
发布于 2023-04-10 23:42 浙江
为什么,不是违反了非聚合列必须出现在 group by 后吗
点赞 回复 分享
发布于 2023-10-26 10:51 陕西

相关推荐

10-14 23:01
已编辑
中国地质大学(武汉) Java
CUG芝士圈:虽然是网上的项目,但最好还是包装一下,然后现在大部分公司都在忙校招,十月底、十一月初会好找一些。最后,boss才沟通100家,别焦虑,我去年暑假找第一段实习的时候沟通了500➕才有面试,校友加油
点赞 评论 收藏
分享
10-28 14:42
门头沟学院 Java
watermelon1124:因为嵌入式炸了
点赞 评论 收藏
分享
29 2 评论
分享
牛客网
牛客企业服务