题解 | #统计复旦用户8月练题情况#

统计复旦用户8月练题情况

http://www.nowcoder.com/practice/53235096538a456b9220fce120c062b3

SELECT
    u.device_id,
    u.university,
    COUNT(qp.id) question_cnt,
    SUM(IF(result = 'right', 1, 0)) right_question_cnt
FROM
    user_profile u
    LEFT JOIN question_practice_detail qp
    ON u.device_id = qp.device_id
    AND MONTH(qp.date) = 8
WHERE u.university = '复旦大学'
GROUP BY
    u.device_id

首先 user_profile 表左连接 question_practice_detail 表,将 8 月份的数据从中挑选出来,然后通过 university 筛选、device_id 分组,计算组内问题ID(qp.id)个数以及通过 SUM 计算 result 为 right 的个数。
这里用到了 IF 判断来将 right 转换成 1,否则为 0.

全部评论
麻烦请教下 用这个方法,为什么运行 结果一致,但 提交时 报错呢? select up.device_id,up.`university`,COUNT(qpd.`question_id`) qustion_cnt ,IF(qpd.`result`='right',1,'0') right_question_cnt FROM `question_practice_detail` qpd RIGHT JOIN `user_profile` up on up.device_id = qpd.device_id where up.university = '复旦大学' and (MONTH(qpd.`date`)=08 or month(qpd.`date`)is null) GROUP BY up.device_id;
点赞 回复 分享
发布于 2021-09-29 21:18

相关推荐

不愿透露姓名的神秘牛友
02-12 18:14
RT,这周五就是情人节了,前女友给我发了消息,我该不该回?
Yoswell:原则上来说让她滚,但是本着工作很累下班想吃瓜的心态,我觉得你可以回一下
点赞 评论 收藏
分享
想要offer的牛油果很大方:老哥,你啥时候面的,有timeline吗
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务