一文详解在线人数统计
在线人数的统计
使用场景
在视频场景下,经常可以看到当前有多少人在看,或者某些场景下,需要我们计算直播间的瞬时人数,作为后端人员,sql编写是必须的,但是这种场景的sql在怎么编写呢?
要实现动态计算访客,可以给sql打一个数据标签,进入(访问)时记录为1,退出时记录为-1。
实现步骤
1、取用户进入直播间时为1,退出为-1。
这里贴上nowCode原题目
https://www.nowcoder.com/practice/d69677e41f9a4bf3b3ed7a42573e9490
1 | select |
这样可以计算到每个进入或出去的记录的值,方便后面进行计算
2、使用窗口函数进行计算
关于窗口函数,不熟悉的可以前去这个知乎er解析里面看,讲解的十分清晰。
通俗易懂的学会:SQL窗口函数 - 知乎 (zhihu.com)
1 | sum(uv) over(partition by course_id order by dt,uv desc) uv_cnt |
关键点:按照日期排序,就可以得到每个时间瞬时进入或出去的人数,使用sum(uv)则可以计算瞬时值,因为需要计算每个课程的瞬时值,所以需要按照课程的id进行分组,这个分组的好处是,不是聚合分组,不会减少行的数量。
3、 最后计算最大值即可
贴上完整sql代码
1 | select |