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

牛客直播各科目出勤率

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

# 4/17 10:43 ~ 
# 字段:course_id、course_name、attend_rate(%)
# 出勤率 = 出勤人数(在线时长10分钟以上) / 报名人数

# tb1:出勤人数, 按照user_id、course_id分组,统计出勤时间
with tb1 as (
    select user_id,course_id,course_name,sum(timestampdiff(second,in_datetime,out_datetime)) as on_time,if_sign
    from attend_tb left join course_tb using(course_id)
    left join behavior_tb using(user_id,course_id)
    # 统计课程开始后进入的用户
    # where course_datetime between in_datetime and out_datetime or course_datetime < out_datetime
    group by user_id,course_id,course_name,if_sign
),
# tb2:出勤人数
tb2 as(
    select course_id,course_name,count(user_id) as attend_num
    from tb1 
    where on_time > 600
    group by course_id,course_name
),
# tb3:报名人数
tb3 as(
    select course_id, count(if_sign) as sign_num
    from  behavior_tb
    where if_sign = 1
    group by course_id
)
select course_id,course_name,round(100*attend_num/sign_num,2) as attend_rate
from tb2 left join tb3 using(course_id)
# 注意点:报名人数和出勤人数的表不能用同一原始表



全部评论

相关推荐

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