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

牛客直播各科目出勤率

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

select c.course_id,course_name,
round(count(distinct case when timestampdiff(minute,in_datetime,out_datetime)>=10
then a.user_id else null end )*100/cnt,2) as attend_rate
from course_tb c
join attend_tb a
on c.course_id = a.course_id
join (select course_id,count(distinct user_id ) as cnt from
behavior_tb where if_sign =1 group by course_id)b
on c.course_id = b.course_id

group by c.course_id,course_name

order by c.course_id

分母容易出错,可能出现一个用户多次注册,因此要去重

但是不能直接在主查询中写分母(select course_id,count(distinct user_id ) as cnt from

behavior_tb where if_sign =1 group by course_id)这样主查询本身的group by 和这句子查询中的group by会发生重复,因此把它通过join的形式体现,再在主查询中引用其中的结果

全部评论

相关推荐

qq乃乃好喝到咩噗茶:院校后面加上211标签,放大加粗,招呼语也写上211
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务