题解 | #牛客直播各科目出勤率#

牛客直播各科目出勤率

http://www.nowcoder.com/practice/0cab547df4f0430b93042128f445d899

简单直接的代码,效率不高,解释性强

注意:

1、报名的人不一定出现在attent_tb中,所以报名人数只能来自于behavior表 2、既然是考虑出勤率,分子一定要小于分母,则考察出勤人的条件有两个: a、已报名(通过behavior表查出) b、在线时长大于10分钟,我这里并没有考虑分段合计大于10分钟,而是简单的考察那些是否存在一段大于10分钟的观看时间


select a.course_id,c.course_name,round(a.num1/b.num2*100,2) as attend_rate
from 
(SELECT a.course_id,
count(distinct case when TIMESTAMPDIFF(MINUTE,in_datetime,out_datetime)>=10 and if_sign=1 then a.user_id else null end) as num1
from attend_tb  as a
left join behavior_tb as b
on a.user_id=b.user_id and a.course_id=b.course_id
group by a.course_id
) as a

left join
(
    select course_id,count(distinct case when if_sign=1 then user_id else null end) as num2
    from behavior_tb
    group by course_id
) as b
on a.course_id=b.course_id
left JOIN  course_tb as c
on a.course_id =c.course_id
order by a.course_id 

全部评论

相关推荐

头像
07-26 14:05
门头沟学院 Java
欧贺桥:哈哈哈哈哈笑死我了
点赞 评论 收藏
分享
ming_ri:后端依旧稳定发挥
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务