select #2、对经过条件筛选后的数据表,挑选出展示字段# t1.uid, #2.1、总活跃月份数 = 用户exam做题月份数 + 用户practice做题月份数 —— 用户exam和practice做题月份相同的月份数(注意:用户总活跃月份数,既包括该用户exam做题月份,也包括该用户practice做题月份)# count(distinct date_format(t2.start_time,'%Y%m')) + count(distinct date_format(t3.submit_time,'%Y%m')) - count(distinct case when date_format(t2.start_time,'%Y%m') = date_format(t3.submit_time,'%Y%m') then date_format(t2.start_time,'%Y%m') else null end) as act_month_total, #2.2、2021年总活跃天数 = 2021年用户exam做题天数 + 2021年用户practice做题天数 —— 2021年用户exam和practice做题月份相同的天数(注意:用户2021年总活跃天数,既包括该用户2021年exam做题天数,也包括该用户2021年practice做题天数,还要注意需要进行2021年的条件筛选)# count(distinct case when extract(year from t2.start_time) = '2021' then date_format(t2.start_time,'%Y%m%d') else null end) + count(distinct case when extract(year from t3.submit_time) = '2021' then date_format(t3.submit_time,'%Y%m%d') else null end) - count(distinct case when date_format(t2.start_time,'%Y%m%d') = date_format(t3.submit_time,'%Y%m%d') then t2.start_time else null end) as act_days_2021, #2.3、仅对用户在2021年的exam做题天数进行汇总(注意:要对日期进行2021年的筛选)# count(distinct case when extract(year from t2.start_time) = '2021' then date_format(t2.start_time,'%Y%m%d') else null end) as act_days_2021_exam, #2.4、仅对用户在2021年的practice做题天数进行汇总(注意:要对日期进行2021年的筛选)# count(distinct case when extract(year from t3.submit_time) = '2021' then date_format(t3.submit_time,'%Y%m%d') else null end) as act_days_2021_question #1、确定需求来源的数据表&对关联后数据表所需进行的条件筛选# from user_info as t1 left join exam_record as t2 on t1.uid = t2.uid left join practice_record as t3 on t1.uid = t3.uid where t1.level in (6,7) #3、按照uid进行分组统计&对统计后的结果按照act_month_total和act_days_2021倒序排序(即由大到小)# group by 1 order by 2 desc,3 desc;