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

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

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

  • 可以用左链接,以第二个表为基础,分别链接第一和第三个表
  • 链接三个表后,以学校和难度分组
  • 分组完成后用having 过滤
SELECT t1.university, 
t3.difficult_level, 
COUNT(t2.result) / COUNT(DISTINCT t2.device_id) AS avg_answer_cnt
FROM question_practice_detail AS t2
LEFT JOIN user_profile AS t1
ON t2.device_id = t1.device_id
LEFT JOIN question_detail AS t3
ON t2.question_id = t3.question_id
GROUP BY t1.university, t3.difficult_level
HAVING t1.university = '山东大学';
全部评论
为啥是result
4 回复 分享
发布于 2022-07-17 15:29
round保留四位小数好像没有吧
1 回复 分享
发布于 2022-02-21 20:09
你这分组不会报错吗
点赞 回复 分享
发布于 2023-07-14 11:28 云南
先用左再用内连接也可以通过
点赞 回复 分享
发布于 2022-11-17 22:35 山东
我也没明白为啥是result
点赞 回复 分享
发布于 2022-10-12 19:29 北京
select bb.university, cc.difficult_level, count(aa.device_id)/count (distinct aa.device_id) as avg_answer_cnt from question_practice_detail aa left join user_profile bb on aa.device_id=bb.device_id left join question_detail cc on aa.question_id=cc.question_id group by bb.university, cc.difficult_level having bb.university='山东大学' 我这个凭什么报错
点赞 回复 分享
发布于 2022-09-19 14:28 山东
GROUP BY不用university吧,已经明确是山东大学的了,使用difficult_level分组就可以了
点赞 回复 分享
发布于 2022-05-11 14:08
第一张为基础表也可以吧? 以什么来判定基础表呢
点赞 回复 分享
发布于 2022-03-09 20:54
为何不能先left join question_detail 再left join user_profile
点赞 回复 分享
发布于 2021-12-01 15:06

相关推荐

评论
72
5
分享

创作者周榜

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