现有某天短视频直播间用户观看直播间的信息表user_view_tb如下, (其中字段包含用户id:user_id、直播间id:room_id、 进入时间:in_time,离开时间:out_time) user_id room_id in_time out_time 1 1001 10:00:00 10:30:00 2 1001 10:01:00 10:05:00 3 1001 10:05:00 10:20:00 1 1002 19:05:00 20:05:00 2 1002 19:15:00 19:55:00 2 1002 20:15:00 20:45:00 3 1002 20:15:00 20:45:00 4 1003 22:15:00 23:15:00 1 1002 23:15:00 23:45:00 4 1002 23:10:00 23:25:00 3 1002 23:00:00 23:35:00 4 1001 23:10:00 23:25:00 3 1001 23:00:00 23:35:00 4 1003 23:10:00 23:15:00 1 1001 20:10:00 20:15:00 1 1001 20:00:00 23:35:00 有直播间信息表room_info_tb如下: room_id room_name room_type 1001 娱乐大王牌 娱乐 1002 声家班 搞笑 1003 嗨嗨嗨 搞笑 请你统计晚上11-12点之间各直播间的在线人数(包含边界值11:00、12:00),并按在线人数降序排序,以上例子输出结果如下: room_id room_name user_count 1001 娱乐大王牌 3 1002 声家班 3 1003 嗨嗨嗨 1
drop table if exists user_view_tb; CREATE TABLE user_view_tb( user_id int(10) NOT NULL, room_id int(10) NOT NULL, in_time time NOT NULL, out_time time NOT NULL ); INSERT INTO user_view_tb VALUES(1, 1001, '10:00:00', '10:30:00'); INSERT INTO user_view_tb VALUES(2, 1001, '10:01:00', '10:05:00'); INSERT INTO user_view_tb VALUES(3, 1001, '10:05:00', '10:20:00'); INSERT INTO user_view_tb VALUES(1, 1002, '19:05:00', '20:05:00'); INSERT INTO user_view_tb VALUES(2, 1002, '19:15:00', '19:55:00'); INSERT INTO user_view_tb VALUES(2, 1002, '20:15:00', '20:45:00'); INSERT INTO user_view_tb VALUES(3, 1002, '20:15:00', '20:45:00'); INSERT INTO user_view_tb VALUES(4, 1003, '22:15:00', '23:15:00'); INSERT INTO user_view_tb VALUES(1, 1002, '23:15:00', '23:45:00'); INSERT INTO user_view_tb VALUES(4, 1002, '23:10:00', '23:25:00'); INSERT INTO user_view_tb VALUES(3, 1002, '23:00:00', '23:35:00'); INSERT INTO user_view_tb VALUES(4, 1001, '23:10:00', '23:25:00'); INSERT INTO user_view_tb VALUES(3, 1001, '23:00:00', '23:35:00'); INSERT INTO user_view_tb VALUES(4, 1003, '23:10:00', '23:15:00'); INSERT INTO user_view_tb VALUES(1, 1001, '20:10:00', '20:15:00'); INSERT INTO user_view_tb VALUES(1, 1001, '20:00:00', '23:35:00'); drop table if exists room_info_tb; CREATE TABLE room_info_tb( room_id int(10) NOT NULL, room_name varchar(20) NOT NULL, room_type varchar(20) NOT NULL ); INSERT INTO room_info_tb VALUES(1001, '娱乐大王牌', '娱乐'); INSERT INTO room_info_tb VALUES(1002, '声家班', '搞笑'); INSERT INTO room_info_tb VALUES(1003, '嗨嗨嗨', '搞笑');
1001|娱乐大王牌|3 1002|声家班|3 1003|嗨嗨嗨|1
考点:排序
限制 1 秒 / 256MB | SQL 题
本题是 SQL 题:给出建表语句与目标结果,要求写出查询语句。
建议步骤
GROUP BY 聚合,过滤分组结果用 HAVING。ROW_NUMBER()、RANK()、SUM() OVER)。易错点:排序方向写反;GROUP BY 后选了非分组字段;没做 ROUND 保留小数;空值参与聚合。
解析由校招宝本地引擎整理(依据源站考点标签 / 人工判题标注 / 题面规模信号),非官方题解,仅供思路参考。
本题来源:2024年秋招-OPPO-数据开发岗笔试。