select course_id, course_name, sum(TIME(in_datetime) <= '19:00:00') as online_num from ( select a.course_id, b.course_name, a.user_id, a.in_datetime, a.out_datetime from attend_tb as a left join course_tb as b on a.course_id = b.course_id ) as c group by course_id, course_name order by course_id;