题解 | #分别满足两个活动的人#
每个6/7级用户活跃情况
http://www.nowcoder.com/practice/a32c7c8590324c96950417c57fa6ecd1
易错点在于有一位用户2021年各项数据均为0,则需要用left join才能保存下来这位用户:
select uid,count(distinct date_format(submit_time,'%Y%m')) act_month_total,
count(distinct case when year(submit_time) = 2021 then date_format(submit_time,'%Y%m%d') end) act_days_2021,
count(distinct case when year(submit_time) = 2021 and flag = 1 then date_format(submit_time,'%Y%m%d') end) act_days_2021_exam,
count(distinct case when year(submit_time) = 2021 and flag = 0 then date_format(submit_time,'%Y%m%d') end) act_days_2021_question
from user_info left join
(
select uid,submit_time,1 as flag from exam_record
union all
select uid,submit_time,0 as flag from practice_record
) A using(uid)
where level = 6 or level = 7
group by uid
order by 2 desc,3 desc