题解 | #牛客直播各科目出勤率#
牛客直播各科目出勤率
https://www.nowcoder.com/practice/0cab547df4f0430b93042128f445d899
select t.course_id , t.course_name , round(100 * avg(case when t.attend_time >= 10 then 1 else 0 end), 2) as attend_rate from( select c.course_id , c.course_name , b.user_id , sum(case when time(a.out_datetime) > '19:00:00' then timestampdiff(minute, if(time(a.in_datetime) < '19:00:00', str_to_date(concat(date(a.in_datetime), '19:00:00'), '%Y-%m-%d %H:%i:%s'), a.in_datetime), a.out_datetime) else 0 end) as attend_time from course_tb as c left join behavior_tb as b on c.course_id = b.course_id and b.if_sign = 1 left join attend_tb as a on a.course_id = b.course_id and a.user_id = b.user_id group by c.course_id, c.course_name, b.user_id ) as t group by t.course_id, t.course_name order by course_id