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

select a.device_id,university,
sum(
    case when question_id is not null
        then 1
        else 0
    end
) as question_cnt ,
sum(
    case when result = 'right'
        then 1
        else 0
    end    
) as right_question_cnt
from user_profile a 
left join question_practice_detail b 
on a.device_id = b.device_id and month(b.date) = 8
where a.university = '复旦大学'
group by device_id

坑点主要是如果过滤8月数据。首先要保留没有匹配到8月数据的同学,所以采用左连接没啥好说的;其次,过滤8月数据的时候,不要放在where里面过滤整个连接后的结果集,这样会导致左连接失去意义,过滤的作用是不作用于a表只作用于b表,所以放在on上面过滤b表。

另一个小技巧是,count统计只能死板的作用于分组字段,但是sum聚合函数则可以在内部使用case when 做进一步过滤,分组之后可以做更加细致的过滤

全部评论

相关推荐

有四六级证书,专四证书经验:心理辅导站干事       2021.10-2022.6○活动组织与协作:与干事合作开展学生比赛活动实施,参与 “外国语学院晴朗杯比赛” 和 “第二届全国大学生心理健康知识竞赛” 组织工作,包含研讨演讲主题、联络选手评委、线上线下推广、题目收集筛选及监考等,吸引超 100 人参与,获 “心理辅导站工作积极分子” 证书。○数据管理与分析:负责外国语学院班级心理报告(晴雨表)管理,用 Excel 整理分析数据,掌握学生心理状况并采取措施,为学院的心理健康工作提供了数据支持。○心理沟通与激励:参与校级心理培训,学习课程后在日常与同学交流,用目标和情感激励法缓解同学心理不适,不仅提升了自身抗压能力,还积累了与用户沟通的经验。第三党支部志愿服务队入党积极分子       2022.4-2024.4○党建活动协助:协助党小组组长完成党日活动文案撰写、会议记录,参与档案整理、校区志愿服务、数据整合等志愿活动,解决师生问题。 ○内容创作与传播:与同志合作撰写发布 “外国语学院博外之声” 推文,阅读量 2000 +,传播党建动态,扩大党支部影响力,也为内容营销和品牌推广积累了经验。外国语学院“商务报告翻译”项目      2023.10○商务知识学习:学习商务报告结构、语言、术语及翻译技巧。 ○团队翻译实践:与团队合作完成商务报告英翻中,确保语言准确专业。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务