由于最近又准备换工作,上份工作偏离数据太多,对一些关键问题都忘了,所以重新梳理了一下sql的几类比较典型的问题:同一时刻最大人数、n日留存问题、最大连续天数、统计学指标(中位数等)以及窗口函数。
今天先来说一下同一时刻里最大人数的问题。
拿牛客网里的一道题来做示例。
大厂真题SQL8每篇文章同一时刻最大在看人数
https://www.nowcoder.com/practice/fe24c93008b84e9592b35faa15755e48
现有用户行为日志表tb_user_log,其中uid-用户ID, artical_id-文章ID, in_time-进入时间, out_time-离开时间, sign_in-是否签到。场景逻辑说明:artical_id-文章ID代表用户浏览的文章的ID,artical_id-文章ID为0表示用户在非文章内容页(比如App内的列表页、活动页等)。
问题:统计每篇文章同一时刻最大在看人数,如果同一时刻有进入也有离开时,先记录用户数增加再记录减少,结果按最大人数降序。
输出示例:
示例数据的输出结果如下:10点0分10秒时,有3个用户正在浏览文章9001;11点01分0秒时,有2个用户正在浏览文章9002。