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

牛客直播各科目出勤率

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

-- 思路:
--		1.attend_tb表 先分组聚合统计出每个学员每门课上课的总时长,并筛选出上课时长>=10分钟的学员信息
--		2.behavior_tb表关联course_tb表统计出每个课程报名的人数
--		3.1与2结果表inner join 分组统计每门课程的出勤率[注意格式化]
select
    t1.course_id,
    t2.course_name,
    round((count(t1.user_id) / t2.sign_cnt)*100, 2) as 'attend_rate(%)'
from(
select
    user_id,
    course_id,
    sum(timestampdiff(MINUTE,in_datetime, out_datetime)) as attend_total_time
from attend_tb
group by user_id,course_id
having sum(timestampdiff(MINUTE, in_datetime, out_datetime)) >= 10
) t1 inner join (
    select
        c.course_name,
        b.course_id,
        count(distinct b.user_id) as sign_cnt
    from behavior_tb b left join course_tb c on b.course_id = c.course_id
    where b.if_sign = 1
    group by c.course_name,b.course_id
) t2  on t1.course_id = t2.course_id
group by t1.course_id,t2.course_name
order by t1.course_id asc

SQL大厂面试题 文章被收录于专栏

牛客网sql大厂面试题题解~

全部评论

相关推荐

废物一个0offer:认真的吗二本本科找人工智能岗位
点赞 评论 收藏
分享
见见123:简历没有啥问题,是这个社会有问题。因为你刚毕业,没有工作经历,现在企业都不要没有工作经历的。社会病了。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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