WITH t1 AS ( SELECT room_id, count(DISTINCT user_id) user_count FROM user_view_tb WHERE hour(in_time) BETWEEN 23 AND 24 OR hour(out_time) BETWEEN 23 AND 24 GROUP BY room_id ) SELECT t1.room_id room_id, room_name, t1.user_count user_count FROM room_info_tb JOIN t1 USING(room_id) ORDER BY user_count DESC