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

牛客直播各科目出勤率

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

with
    t1 as(
        #每个报名人的上课情况记录
        select 
            distinct
            ct.course_id,
            ct.course_name,
            bt.user_id,
            if(in_datetime is null,0,(unix_timestamp(out_datetime)-unix_timestamp(in_datetime))/60 )`sub_minutes`
        from behavior_tb `bt`
        left join attend_tb `at`
        on bt.user_id =at.user_id and bt.course_id=at.course_id
        join course_tb `ct`
        on ct.course_id = bt.course_id
        where bt.if_sign=1
    ),
    t2 as(
        #获取每个报名人每科听课总时长的记录
        select 
            distinct
            course_id,
            course_name, 
            user_id,
            sum(sub_minutes) over(partition by course_id,course_name,user_id  ) `total_minutes`
        from t1
    )

select 
    course_id,
    course_name, 
    round(100*sum(if(total_minutes>=10,1,0))/sum(if(total_minutes is null,1,1)),2) `attend_rate(%)`
from t2
group by course_id,course_name

全部评论

相关推荐

脑袋锈住了:你这算啥,哥们中科院中强所硕士,本科211,叫我去干分拣,时薪20
点赞 评论 收藏
分享
2025-12-22 16:31
已编辑
桂林电子科技大学 Python
很奥的前端仔:如果你接了offer 临时又说不去 hr确实要多做一些工作。 当然如果是接offer之前当我没说
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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