题解 | #统计每个学校的答过题的用户的平均答题数#

统计每个学校的答过题的用户的平均答题数

https://www.nowcoder.com/practice/88aa923a9a674253b861a8fa56bac8e5

select university,count(question_id)/count(distinct b.device_id) as avg_answer_cnt
from (select device_id,university,active_days_within_30 from user_profile) a left join question_practice_detail b on a.device_id=b.device_id
group by university
having avg_answer_cnt is not NULL

首先连接,连接时本着有用的才连接,所以先从user表中select一部分列做连接,连接后按学校分组,此时的结果表中会有两列device_id,分别代表学校学生设备id和参与答题的学生设备id,所以在计算平均答题率时分母为参与答题学生设备id即b.device_id,由于这列数据有重复值(一个学生可以答多道题目),故要distinct去重,最后的having语句是为了避免一个学校没有学生答题时答题率为None的情形(此时时不必要展示的)

感觉这种方法有点繁琐了,有更简单的可以讨论下。

全部评论

相关推荐

不愿透露姓名的神秘牛友
07-09 11:30
找工作7个月,投了7000封,3段世界五百强实习,才有一个offer,牛油们肯定比我强吧
码农索隆:不对不对不对,实习经历这么厉害,简历也没少投,问题出在哪呢
点赞 评论 收藏
分享
半解316:内容充实,细节需要修改一下。 1,整体压缩为一页。所有内容顶格。 2,项目描述删除,直接写个人工作量 修改完之后还需要建议,可以私聊
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务