题解 | #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是什么意思,这个怎么表示出八月份没答题的,有点没有看懂
点赞 回复 分享
发布于 2024-03-02 18:46 浙江

相关推荐

面了这么多场试,总有公司总喜欢压力面一个小时面试+手撕,哪里不会就点哪里,说了不会不会还继续追着问不尊重求职者,稍微有些细节记不清了,就开始怀疑项目真实性以及人格让求职者开摄像头但是自己不开,说话声音还贼小,pardon几次就开始不耐烦的不知道这个算不算,手撕的时候,面试官人跑了。。。最后快结束才来
一纸丿繁华丶:你换位思考一下,自己在职场被领导push麻了,身心俱疲,现在有个机会让你放松一下,体验一把上位者的感觉,还能看着那些高学历人才、未来自己的竞争者,抓耳挠腮、手足无措的样子,没给你当场笑出来就不错了,理解一下面试官吧。
点赞 评论 收藏
分享
缒梦&独舞:这家公司是这样的,去年给我实习offer了,不过也是面着玩儿的,他周六还要去做公益志愿活动
点赞 评论 收藏
分享
一tiao酸菜鱼:秋招还没正式开始呢,就准备有结果了。。。。?
点赞 评论 收藏
分享
评论
23
1
分享

创作者周榜

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