select r.room_id, r.room_name, count(distinct u.user_id) as user_count
from room_info_tb r 
left join user_view_tb u on r.room_id = u.room_id
where in_time <= '23:59:59' and out_time >= '23:00:00'
group by r.room_id, r.room_name
order by user_count desc

关键部分:where 中in_time与out_time时间范围的确定。

若23:00-24:00在线,则有以下几种情况:

  1. 进入:23:00之前
  2. 退出:23:00-24:00之间
  3. 退出:24:00之后
  4. 进入:23:00-24:00之间
  5. 退出:23:00-24:00之间
  6. 退出:24:00之后
  7. 进入:24:00之后,不满足条件

综上所述,可得到时间范围为:in_time <= '23:59:59' and out_time >= '23:00:00'

(注意,需要使用distinct u.user_id进行人数统计,因为可能存在用户反复进入直播间的情况)