SQL15 统计作答次数

题目主要信息:

  • 从试卷作答记录表中统计出总作答次数total_pv、试卷已完成作答数complete_pv、已完成的试卷数complete_exam_cnt

问题拆分:

  • 从数据表格中选择三项输出。知识点:select ... from ...
  • 第一项是选择总的作答次数,这个表格因为只要有一次作答id就会自增,因此统计id的总和。知识点:count()
  • 第二项是选择试卷完成的作答数,只要完成就会有分数,否则为null,因此可以记录所有分数中不为null出现的次数:
    • 用if判断是否为null,为null得0,否则得1。知识点:if(判断,参数1,参数2)
    • 用sum将if的结果相加就是不为得分null出现的次数。知识点:sum()
  • 第三项是被完成的试卷数,用exam_id区分,即统计得分不为null的情况下不同的exam_id有多少。知识点:count()、distinct

代码:

select count(id) as total_pv,
       sum(if(score is null, 0, 1)) as complete_pv,
       count(distinct exam_id and score is not null) as complete_exam_cnt
from exam_record