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

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

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

首先根据以下代码获得初步结果:

select * 
from user_profile u
left JOIN question_practice_detail q

# left join on 后面最好只放两者关联条件,不要放单独条件,
# 例如 “u.university = '复旦大学'”,容易出错
on u.device_id = q.device_id

# 要同时考虑在 8 月答题了和没答题的用户
where u.university = '复旦大学' and (Month(q.date) = '08' or Month(q.date) is null);

结果如下:

2|3214|male|None|复旦大学|4.000|15|5|25|15|3214|113|wrong|2021-08-18
2|3214|male|None|复旦大学|4.000|15|5|25|14|3214|112|wrong|2021-08-16
2|3214|male|None|复旦大学|4.000|15|5|25|9|3214|113|wrong|2021-08-15
7|4321|male|28|复旦大学|3.600|9|6|52|None|None|None|None|None

然后分组求和:

select u.device_id, u.university,
        SUM(if(q.result is not null, 1, 0)) questino_cnt,
        SUM(if(q.result = 'right', 1, 0)) right_question_cnt 
from user_profile u
left JOIN question_practice_detail q

# left join on 后面最好只放两者关联条件,不要放单独条件,
# 例如 “u.university = '复旦大学'”,容易出错
on u.device_id = q.device_id

# 要同时考虑在 8 月答题了和没答题的用户
where u.university = '复旦大学' and (Month(q.date) = '08' or Month(q.date) is null)
group by u.device_id;
全部评论
想问一下Month(q.date) is null是什么意思,这个怎么表示出八月份没答题的,有点没有看懂
点赞 回复
分享
发布于 03-02 18:46 浙江

相关推荐

18 1 评论
分享
牛客网
牛客企业服务