此题共包含三张表:
表1:course_tb
表2:attend_tb
表3:behavior_tb
要解决的问题:
请你统计每个科目的出勤率(attend_rate(%),结果保留两位小数),出勤率=出勤(在线时长10分钟及以上)人数 / 报名人数,输出结果按course_id升序排序
解题思路:
- 统计出勤人数和报名人数(注意剔除重复的user_id)
- 输出结果按course_id升序排序
SELECT t1.course_id,
course_name,
ROUND((online_num / sum(if_sign))*100,2) `attend_rate(%)`
FROM(
SELECT atb.course_id course_id,
ctb.course_name course_name,
count(DISTINCT atb.user_id) online_num
from attend_tb atb
LEFT JOIN course_tb ctb
on atb.course_id = ctb.course_id
where TIMESTAMPDIFF(minute,in_datetime,out_datetime) > '10'
GROUP BY atb.course_id ) t1
left join behavior_tb btb
on t1.course_id = btb.course_id
GROUP BY t1.course_id,course_name
ORDER BY course_id