感谢大佬总结的思路:求某一时刻同时在线人数,只需判断该时刻 between '进入时间' and '退出时间';不过这道题涉及到字符串转时间然后进行时间比较的。这里可以使用str_to_date将str按格式转为datetime然后进行比较。
select ct.course_id, ct.course_name, count(distinct at.user_id) as online_num from course_tb ct join attend_tb at on ct.course_id=at.course_id where str_to_date(substring_index(ct.course_datetime, '-', 3), '%Y-%m-%d %H:%i') between at.in_datetime and at.out_datetime group by ct.course_id, ct.course_name order by ct.course_id asc