SQL189 牛客直播各科目同时在线人数

SQL189 牛客直播各科目同时在线人数

参考相似题目:SQL88 输出播放量最高的视频-CSDN博客

思路完全一样。。

sql 复制代码
WITH
    -- 生成所有事件点(开始+1,结束-1)
    events AS (
        SELECT
            course_id,
            in_datetime AS event_time,
            1 AS event_type
        FROM
            attend_tb
        UNION ALL
        SELECT
            course_id,
            out_datetime AS event_time,
            -1 AS event_type
        FROM
            attend_tb
    ),
    -- 按时间排序并计算累计同时播放数
    running_counts AS (
        SELECT
            course_id,
            event_time,
            SUM(SUM(event_type)) OVER (
                PARTITION BY
                    course_id
                ORDER BY
                    event_time ROWS UNBOUNDED PRECEDING
            ) AS concurrent_play
        FROM
            events
        GROUP BY
            course_id,
            event_time
    ),
    -- 找出每个视频的最大同时播放数
    max_concurrent AS (
        SELECT
            course_id,
            MAX(concurrent_play) AS max_num
        FROM
            running_counts
        GROUP BY
            course_id
    )
SELECT
    course_id,
    course_name,
    max_num
FROM
    max_concurrent
    join course_tb using (course_id)
ORDER BY
    course_id
相关推荐
秋秋棠7 小时前
MyBatis动态SQL实战:告别硬编码,拥抱智能SQL生成
java·数据库·sql·mybatis
秋秋棠15 小时前
MyBatis动态SQL全解析:五大核心标签实战指南
数据库·sql·mybatis
ZNing_11 天前
SQL基础操作指南:约束、表设计与复杂查询
数据库·笔记·sql·学习
王木风2 天前
InnoDB 多版本控制 &慢sql排查(基于MySQL 5.7)
数据库·sql·mysql
泛冬以南2 天前
涉及海量数据的查询SQL建议使用“数据库函数”封装并调用
sql·mybatis·达梦数据库·亿级数据查询·表函数
在这habit之下2 天前
sql注入以及Python二分查找
sql·网络安全
modelmd2 天前
mysql not in 查询引发的bug问题记录
sql·mysql
scheduleTTe3 天前
SQL增查
数据库·sql
SoFlu软件机器人3 天前
告别手动报表开发!描述数据维度,AI 自动生成 SQL 查询 + Java 导出接口
java·数据库·sql