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
相关推荐
曹牧9 小时前
SQL:多个事务同时修改同一索引块
数据库·sql
lzhdim11 小时前
SQL 入门 12:SQL 视图:创建、修改与可更新视图
java·大数据·服务器·数据库·sql
@小柯555m12 小时前
MySql(高级操作符--操作符混合运用)
数据库·sql·mysql
@小柯555m19 小时前
MySql(高级操作符--Where in 和Not in)
数据库·sql·mysql
小的~~20 小时前
Milvus会存在SQL注入攻击吗?
数据库·sql·milvus
许彰午21 小时前
CacheSQL(三):双 HTTP 引擎与 SQL 查询——接口抽象的价值
java·数据库·sql·缓存
俺不要写代码2 天前
数据库:DQL
数据库·sql·mysql
uElY ITER2 天前
MySQL 中如何进行 SQL 调优
android·sql·mysql
禹凕2 天前
MYSQL——基础知识(元数据)
数据库·sql·mysql