select course_id, course_name
, round(100*sum(if_on)/count(if_on),2) as attend_rate
from (
select course_name, course_id, user_id
, if(sum(timestampdiff(minute,in_datetime,out_datetime))>=10,1,0) as if_on
from course_tb
left join behavior_tb using(course_id)
left join attend_tb using(course_id,user_id)
where if_sign = 1
group by course_name, course_id, user_id
)as t1
group by course_name, course_id
order by course_id
坑点:统一用户的信息会重复出现
解决方法:group by 之后会自动去除重复



京公网安备 11010502036488号