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

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

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

题意明确:

每个学校的用户平均答题数量


问题分解:

  • 限定条件:无;
  • 每个学校:按学校分组,group by university
  • 平均答题数量:在每个学校的分组内,用总答题数量除以总人数即可得到平均答题数量count(question_id) / count(distinct device_id)
  • 表连接:学校和答题信息在不同的表,需要做连接

细节问题:

  • 表头重命名:as

完整代码:

select university,
    count(question_id) / count(distinct qpd.device_id) as avg_answer_cnt
from question_practice_detail as qpd
inner join user_profile as up
on qpd.device_id=up.device_id
group by university
全部评论
题主用了inner join 就不用再考虑没有答题的同学了,内连接的特性就是两个表都有的才显示,如果根据两个表中的device_id进行连接的话,第一个表中没打过题的同学的device_id就不会再显示了
49 回复 分享
发布于 2022-03-10 10:56
是不是漏了一点,如果这个用户没有答题呢
7 回复 分享
发布于 2021-11-27 16:01
保留4位小数不用ROUND(COUNT(result) / COUNT(Distinct qpd.device_id),4)吗
5 回复 分享
发布于 2022-01-13 10:54
题目要求结果按照university升序排序,为啥没有order by university
4 回复 分享
发布于 2022-04-21 18:01
感觉这题有点迷糊🥱
4 回复 分享
发布于 2022-03-09 20:55
不对吧,问的是答过题的用户的平均答题量,你这种方法,把没答过题的也放进去平均了
4 回复 分享
发布于 2022-03-03 22:30
咋就这个question_id就是总答题数量了,它不是答题编号?
3 回复 分享
发布于 2021-12-22 23:01
为什么得出的结果自动保留了后4位数 也没用format啊
3 回复 分享
发布于 2021-12-01 15:21
SELECT u.university as university, COUNT( q.question_id )/COUNT(DISTINCT q.device_id ) as avg_answer_cnt FROM user_profile u LEFT JOIN question_practice_detail q ON u.device_id = q.device_id GROUP BY u.university order by u.university; 这个查询结果一模一样,不知道为啥不让我过
2 回复 分享
发布于 2022-09-05 09:12 广东
请问为什么要用distinct?或者说什么时候用distinct?我在这里和后面的题有点弄混了,麻烦大神帮忙解答一下
2 回复 分享
发布于 2022-07-11 10:59
可能有的学校学生没有答过题,需要加上条件where question_id is not null
2 回复 分享
发布于 2022-01-14 10:41
为啥不用left join
2 回复 分享
发布于 2022-01-10 21:07
你这给的答案错误也太多了,也没保留小数,也没排序,这种答案就别秀了
1 回复 分享
发布于 2023-01-23 10:31 北京
用内连接,你这用的是左外连接.你去看你的查询结果就知道了,有一个'北京理工大学'的没有参与答题,但是左外连接还是算进去了
1 回复 分享
发布于 2022-09-08 21:52 四川
我可以把count(question_id) / count(distinct qpd.device_id) as avg_answer_cnt 放在后面having 里吗?
1 回复 分享
发布于 2022-03-20 16:18
为什么 用dinstinct qpd.device_id 是对的 用up.device_id 这个换查出来是错的
1 回复 分享
发布于 2022-02-18 19:14
不是求各高校分别的平均答题数吗?看上面求数公式好像是求高校的平均答题数了。有没有人解释一下原理,感谢!
1 回复 分享
发布于 2022-01-09 12:27
Column 'device_id' in field list is ambiguous什么鬼报错了
1 回复 分享
发布于 2021-12-01 14:45
有大牛知道这个为啥报错吗? select university, count(qpd.question_id)/count(distinct qpd.device_id) as avg_answer_cnt from (select up.device_id, up.university, qpd.device_id, qpd.question_id from user_profile as up left join question_practice_detail as qpd on up.device_id=qpd.device_id) group by university
点赞 回复 分享
发布于 2024-12-29 12:32 广东
select university,round(count(q.question_id ) / count(distinct q.device_id),4) as avg_answer_cnt from question_practice_detail q join user_profile u on q.device_id = u.device_id group by university order by university
点赞 回复 分享
发布于 2024-12-09 16:02 山东

相关推荐

Ncsbbss:又想干活又想要工资,怎么什么好事都让你占了
点赞 评论 收藏
分享
03-28 19:11
铜陵学院 C++
有礼貌的山羊追赶太阳:太典了,连笔试都没有开始就因为HC满了而结束了,而且还卡你不让你再投其他部门的。
点赞 评论 收藏
分享
评论
488
81
分享

创作者周榜

更多
牛客网
牛客企业服务