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

牛客直播各科目出勤率

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

with a as
(select course_id,course_name,
count(distinct case when timestampdiff(minute,in_datetime,out_datetime)>=10 then user_id else null end) attend_num
from attend_tb
left join course_tb using(course_id)
group by course_id,course_name),
b as 
(select course_id,sum(if_sign) as sign_num
from behavior_tb
group by course_id)
select course_id,course_name,round(100*a.attend_num/b.sign_num,2) as 'attend_rate(%)'
from a left join b using(course_id)
order by course_id





1、先求出报名人数,作为表b

表:behavior_tb

报名人数:sum(if_sign) as sign_num

按照课程ID分组:group by course_id

2、求出出勤人数,作为表a

表:attend_tb和course_tb连接,用以取出课程名称

出勤人数:count(distinct)

大于10分钟:用case when 和 timestampdiff函数,

count(distinct case when timestampdiff(minute,in_datetime,out_datetime)>=10 then user_id else null end) attend_num

按照课程ID、名称分组:group by course_id,course_name

3、连接b和a表,临时表更简单

4、求出出勤率

出勤率=出勤人数/报名人数:attend_num/ sign_num

保留2位小数:round(x,2)

5、排序

order by course_id

全部评论

相关推荐

不愿透露姓名的神秘牛友
07-29 14:13
点赞 评论 收藏
分享
06-12 16:23
已编辑
小米_软件开发
点赞 评论 收藏
分享
06-26 22:20
门头沟学院 Java
码农索隆:让你把简历发给她,她说一些套话,然后让你加一个人,说这个人给你改简历,然后开始卖课
我的求职精神状态
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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