题解 | #每个6/7级用户活跃情况#

每个6/7级用户活跃情况

http://www.nowcoder.com/practice/a32c7c8590324c96950417c57fa6ecd1

with table1 as(
	select uid , 
	date_format(start_time,'%Y-%m') as act_month,
	date_format(start_time,'%Y-%m-%d') as act_days, 'exam' as type
	from exam_record
	union all
	select uid, 
	date_format(submit_time,'%Y-%m') as act_month,
	date_format(submit_time,'%Y-%m-%d') as act_days, 'question' as type
	from practice_record
) 
select ui.uid, 
	count(distinct act_month) as act_month_total,
	count(distinct
    	case 
    	when year(act_days) = '2021' then act_days else null end)
    	as act_days_2021, 
	count(distinct
    	case when year(act_days) = '2021' and type = 'exam' 
    	then act_days else null end) as act_days_2021_exam, 
	count(distinct
    	case when year(act_days) = '2021' and type = 'question' 
    	then act_days else null end) as act_days_2021_question
from table1
right join user_info as ui using(uid)
where ui.level in ('6','7')
group by uid
order by act_month_total desc, act_days_2021 desc 

1、考虑先把需要用的两个record表中的数据编成一个表table1,主键为uid,过滤出活跃月和活跃日,并用type标签区别一下。 2、从新表table1中筛选数据,利用tag区别试卷和作答的活跃天数。 3、在筛选6/7级用户时使用右链接,把user_info看做主表。

全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务