select exam_id,start_month,month_cnt, sum(month_cnt)over(partition by exam_id order by start_month) as cum_exam_cnt from ( select exam_id,date_format(start_time,'%Y%m') as start_month, count(1) as month_cnt from exam_record group by exam_id,date_format(start_time,'%Y%m') ) t