题解 | #短视频直播间晚上11-12点之间各直播间的在线人数#

短视频直播间晚上11-12点之间各直播间的在线人数

https://www.nowcoder.com/practice/38f5febc9dac4e9e84ed5891a3e4ca05

这道题目要求我们统计在晚上特定时间段里各个直播间的在线人数,我们要做的事情如下:

1. 确定总体问题

我们需要统计在晚上11点到12点之间,各个直播间的在线人数,并按在线人数降序排序。

2. 分析关键问题

  • 连接表:将user_view_tbroom_info_tb表连接起来,以便获取每个直播间的名称。
  • 筛选时间段:筛选出在晚上11点到12点之间在线的用户。
  • 计算独立用户数:对每个直播间的独立用户数进行计数。
  • 排序输出:按在线人数降序排序。

3. 解决每个关键问题的代码及讲解

步骤1:连接表

我们使用JOINuser_view_tbroom_info_tb表连接起来:

FROM 
    user_view_tb u
JOIN 
    room_info_tb r ON u.room_id = r.room_id
  • JOIN room_info_tb r ON u.room_id = r.room_id:通过直播间ID连接两个表,以便获取每个直播间的名称。
步骤2:筛选时间段

我们使用WHERE子句筛选出在晚上11点到12点之间在线的用户:

WHERE 
     u.in_time <= '23:59:59' AND u.out_time >= '23:00:00'
  • u.in_time <= '23:59:59' AND u.out_time >= '23:00:00':筛选出在指定时间段内在线的用户。
步骤3:计算独立用户数

我们使用COUNT(DISTINCT u.user_id)对每个直播间的独立用户数进行计数:

SELECT 
    u.room_id,
    r.room_name,
    COUNT(DISTINCT u.user_id) AS user_count
  • COUNT(DISTINCT u.user_id) AS user_count:计算每个直播间的独立在线用户数,DISTINCT去重。
步骤4:排序输出

我们使用ORDER BY按在线人数降序排序输出结果:

ORDER BY 
    user_count DESC

完整代码

SELECT 
    u.room_id,
    r.room_name,
    COUNT(DISTINCT u.user_id) AS user_count
FROM 
    user_view_tb u
JOIN 
    room_info_tb r ON u.room_id = r.room_id
WHERE 
     u.in_time <= '23:59:59' AND u.out_time >= '23:00:00'
GROUP BY 
    u.room_id, r.room_name
ORDER BY 
    user_count DESC;
全部评论

相关推荐

07-01 23:23
郑州大学 Java
否极泰来来来来:牛客迟早有高三的
点赞 评论 收藏
分享
Lorn的意义:1.你这根本就不会写简历呀,了解太少了 2.你这些项目经历感觉真的没啥亮点啊,描述的不行,重写书写一下让人看到核心,就继续海投 注意七八月份ofer还是比较多的,越往后机会越少,抓住时机,抓紧检查疏漏,加油查看图片
点赞 评论 收藏
分享
07-13 14:45
南华大学 Java
北斗导航Compas...:英文和中文之间加个空格,有的句子有句号 有的没。其他没啥问题
点赞 评论 收藏
分享
评论
8
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务