这题的难点在于怎么链接,要表现出所有用户,因此behavior表是base表,再左连接,才不会丢失用户信息
select be.course_id,course_name,
round(100*sum(if(sum_time>=10,1,0))
/sum(if(if_sign=1,1,0)),2) as attend_rate
from behavior_tb be left join
(select user_id,course_id,
sum(timestampdiff(minute,in_datetime,out_datetime)) as sum_time
from attend_tb
group by user_id,course_id
) att using(user_id,course_id)
left join course_tb cou on be.course_id=cou.course_id
group by be.course_id,course_name