题解 | #牛客直播各科目出勤率#

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

http://www.nowcoder.com/practice/d69677e41f9a4bf3b3ed7a42573e9490

第一步,得到每个时间在线的人数,即 in_datetime就加1,out_datetime就减1,再union,注意要保留user_id字段,避免union把不同用户相同时间的数据去重(或union all也行) --表t1

第二步,用sum(diff) over(partition by course_id order by t,diff desc)计算截止到某一时间的总在线人数 --表t2

第三步,选择最大的人数max(num)

最终的sql

with t1 as(
select 
user_id,course_id,course_name, in_datetime t, 1 diff
from 
course_tb
join
attend_tb
using(course_id)
union
select 
user_id,course_id,course_name, out_datetime t, -1 diff
from 
course_tb
join
attend_tb
using(course_id)),
t2 as(select course_id,course_name,t,
sum(diff) over(partition by course_id order by t,diff desc) num
from t1 
order by course_name)

select course_id,course_name,max(num) max_num
from t2 
group by course_id,course_name
order by course_id
全部评论
计算截止每个瞬间的上线人数减去下线人数,为啥在开窗函数的时候不加上瞬间(这个时刻)的分组条件呢,而是只按照course_id分组?
点赞 回复 分享
发布于 2022-06-28 17:08

相关推荐

uu们,拒offer时hr很生气怎么办我哭死
爱睡觉的冰箱哥:人家回收你的offer,或者oc后没给你发offer的时候可不会愧疚你,所以你拒了也没必要愧疚他。
点赞 评论 收藏
分享
frutiger:逆天,我家就安阳的,这hr咋能说3k的,你送外卖不比这工资高得多?还说大厂来的6k,打发叫花子的呢?这hr是怎么做到说昧良心的话的
找工作时遇到的神仙HR
点赞 评论 收藏
分享
门口唉提是地铁杀:之前b站被一个游戏demo深深的吸引了。看up主页发现是个初创公司,而且还在招人,也是一天60。二面的时候要我做一个登录验证和传输文件两个微服务,做完要我推到github仓库,还要我加上jaeger和一堆运维工具做性能测试并且面试的时候投屏演示。我傻乎乎的做完以后人家跟我说一句现在暂时不招人,1分钱没拿到全是白干
你的秋招第一场笔试是哪家
点赞 评论 收藏
分享
评论
1
1
分享

创作者周榜

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