题解 | #统计作答次数#

统计作答次数

https://www.nowcoder.com/practice/45a87639110841b6950ef6a12d20175f

select
    count(start_time) as total_pv,
    count(submit_time) as complete_pv,
    count(distinct if(submit_time is not null, exam_id, null)) as complete_exam_cnt
from exam_record

题目:有一个试卷作答记录表exam_record,请从中统计出总作答次数total_pv、试卷已完成作答数complete_pv、已完成的试卷数complete_exam_cnt。

总作答次数:有几个开始时间

已完成作答次数:有几个提交时间

已完成的试卷数,即完成了哪些卷子。

注意:中途退出的为未完成状态,其交卷时间和份数为NULL。

重点:已完成试卷数(complete_exam_cnt):count(distinct【考虑一种卷子很多人做的情况需要数据去重】if(submit_time is not null,exam_id,null) 如果提交时间非空,则为已完成状态,返回卷子ID,进入count计算;若为空值,则为未完成状态,返回空值,不进入计算。

疑点:这里我先用了select子查询求完成卷子的列,再结合count函数计算,但是是错误的。count(select distinct exam_id from exam_record where submi_time is not null) 不知道为什么,经常出现这样的问题,难道是聚合函数不能和子查询一起用吗?

全部评论

相关推荐

03-27 01:58
已编辑
西北工业大学 Java
在平静中度过当下:如果这个bg也简历挂的话可能他们现在不缺人了吧,我也是这两天投的,阿里和快手投的岗都是简历秒挂
点赞 评论 收藏
分享
04-03 22:41
兰州大学 C++
老六f:有时候是HR发错了,我之前投的百度的后端开发,他给我发的算法工程师,但是确实面的就是百度开发
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

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