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

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

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

根据题目可知几个限定条件

1.学校为复旦大学,即 user_profile.university='复旦大学';
2.练习月份为8月,即 month(question_practice_detail.date)='08';
3.8月未练习的用户,练习题目数和正确数都为0,用 if 和 case when 都可,看个人习惯

主要考察 join 和 if、case when 用法

捋清楚限定条件后,开始写代码,比较习惯用 with as,所以这里也用了 with as

-- 1.复旦大学用户

with user_fd as 
             (select id,
                     device_id,
                     university
              from user_profile
              where university='复旦大学'
),
-- 2.8月用户练习记录

   que as 
        (
              select device_id,
                     count(question_id) as question_cnt 
                     sum(case when result='right' then 1 else 0 end) as right_question_cnt
              from question_practice_detail
              where month(date)='08'
              group by device_id
)
--3.left join 后,对于8月未练习的复旦用户,答题数和正确数均赋值为0,得出结果
select user_fd.device_id,
       user_fd.university,   
       case when que.question_cnt is null then 0 else que.question_cnt end as question_cnt,
       case when que.right_question_cnt is null then 0 else que.right_question_cnt end as right_question_cnt
from user_fd left join que 
on user_fd.device_id=que.device_id
#SQL面试#
全部评论

相关推荐

不愿透露姓名的神秘牛友
07-02 14:45
bg是二本双一流硕,目标是Java后端开发岗,投暑期实习0大厂面试,只有极少的大厂测开,可能投的晚加上简历太烂加上0实习?求大佬们给个建议
程序员小白条:别去小厂,初创或者外包,尽量去中小,100-499和500-999,专门做互联网产品的,有公司自研的平台和封装的工具等等,去学习一些业务相关的,比如抽奖,积分兑换,SSO认证,风控,零售等等,目标 Java 后端开发吗?你要不考虑直接走大厂测开?如果技术不行的话,有面试你也很难过的
实习,不懂就问
点赞 评论 收藏
分享
05-29 20:34
门头沟学院 C++
KarlAllen:得做好直接春招的准备。学历差的话,一是面试要求会比学历好的严格不少,二是就算面试通过了也会被排序。总之暑期和秋招对于学历差的就是及其不友好
无实习如何秋招上岸
点赞 评论 收藏
分享
程序员牛肉:主要是因为小厂的资金本来就很吃紧,所以更喜欢有实习经历的同学。来了就能上手。 而大厂因为钱多,实习生一天三四百的就不算事。所以愿意培养你,在面试的时候也就不在乎你有没有实习(除非是同级别大厂的实习。) 按照你的简历来看,同质化太严重了。项目也很烂大街。 要么换项目,要么考研。 你现在选择工作的话,前景不是很好了。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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