1.思路比较清晰,分别利用两张表,一张表用来统计各科的报名人数,另一张表用来统计各科的出勤人数

with a as( select course_id,count(distinct user_id) as nums from (select user_id,course_id, (case when timestampdiff(minute,in_datetime,out_datetime)>=10 then 1 else 0 end) as if_true from attend_tb) as t1 where if_true = 1 group by course_id), b as ( select course_id,sum(if_sign) as sign_num from behavior_tb group by course_id )

2.连接两张表,统计出勤率

select course_id,course_name ,attend_rate from (select b.course_id ,round((nums/sign_num)*100,2) as attend_rate from b left join a USING(course_id)) as t1 inner join course_tb using(course_id)