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

牛客直播各科目出勤率

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

# 重点在于计算出勤率中的出勤人数,即计算 每个科目 每个人的在线时长,再找出每个科目在线时长大于10分钟的人数

# 每个科目 每个人的在线时长 简化为 in_datetime 和 out_datetime 的差

WITH t AS (SELECT
course_id,
course_name,
user_id,
TIMESTAMPDIFF(SECOND,in_datetime,out_datetime)/60 AS online_time
FROM attend_tb
JOIN course_tb USING(course_id)),

t1 AS (SELECT
course_id,
course_name,
COUNT(DISTINCT IF(online_time>10,user_id,NULL)) AS attend
FROM t
GROUP BY course_id,course_name),

t2 AS (SELECT
course_id,
course_name,
SUM(if_sign) AS signs
FROM behavior_tb
JOIN course_tb USING(course_id)
GROUP BY course_id,course_name)

SELECT
t1.course_id,
t1.course_name,
ROUND(attend/signs*100,2) AS attend_rate
FROM t1 JOIN t2 ON t1.course_id = t2.course_id AND t1.course_name = t2.course_name;


全部评论

相关推荐

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