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

牛客直播各科目出勤率

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

SELECT C.course_id,C.course_name,
      ROUND(T1.P/T2.B*100,2) AS "attend_rate(%)"
FROM course_tb C
JOIN
    (SELECT course_id,COUNT(DISTINCT user_id) AS P
    FROM attend_tb
    WHERE TIMESTAMPDIFF(MINUTE,in_datetime,out_datetime)>=10
    GROUP BY course_id) T1
--先求每个课程的出勤人数,注意有用户一节课进出了两次,需要去重(distinct user_id)
JOIN
    (SELECT course_id,SUM(if_sign) B
    FROM behavior_tb
    GROUP BY course_id) T2
ON C.course_id=T1.course_id AND C.course_id=T2.course_id
--再求出各课程报名的人数,联结三个表,用course_id作为条件
ORDER BY C.course_id;
附:其实鄙人认为,这题这么求有点隐含问题,
因为当同一个用户在同一节 课程进进出出几次,然后累计时间超过10分钟,但是单次没超过的话,他不会被算成出勤了,这样出勤率就会有问题(算小了)。
全部评论

相关推荐

04-15 23:42
中山大学 Java
ResourceUtilization:过几天楼主就会捧着一堆offer来问牛友们该怎么选辣
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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