思路: ①找出每月的新增用户,即该uid所有作答时间里最早的那一行,用min窗口函数取出最早的start_time,当min(start_time)=start_time计为1,否则记为0; ②根据月份分组,取出uid数、累计新增用户数(把前述的1求和)、最大新增数(用max窗口函数)、累计新增数(用sum窗口函数) select start_month as month, count(distinct uid) as mua, sum(new) as month_add_uv, max(sum(new))over(order by start_month) as max_month_add_uv, sum(sum(new))over(order by start_month) as cum_sum_uv from( select uid, date_format(start_time,'%Y%m') start_month, if(min(start_time)over(partition by uid order by start_time)=start_time,1,0) as new from exam_record) as tb1 group by start_month