- 注意with.. as ..的用法:with t1 as(...),t2 as(...) select...
- 注意按出勤用户去重。
with t1 as(
select
course_id,
count(distinct if(
timestampdiff(minute, in_datetime, out_datetime) >= 10,
user_id,
null
) ) as attendnum
from
attend_tb
group by
course_id
), t2 as(
select
course_id,
course_name,
sum(if_sign) as signnum
from
behavior_tb
join course_tb using(course_id)
group by
course_id,
course_name
)
select
course_id,
course_name,
round(attendnum/signnum*100,2) as attendrate
from t2
join t1 using(course_id)
order by course_id