题解 | #统计作答次数#

统计作答次数

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) 不知道为什么,经常出现这样的问题,难道是聚合函数不能和子查询一起用吗?

全部评论

相关推荐

牛客101244697号:电竞协会感觉不如不写
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务