2024-11 Bilibili 中等

Bilibili 希望了解每个频道下最受欢迎的视频,以便优化内容推荐和广告投放策略。

通过计算每个视频的观看次数,并使用 RANK() 窗口函数来确定每个频道下观看次数最多的视频,可以帮助 Bilibili 更好地了解用户偏好。

任务

  1. 计算每个视频的观看次数。
  2. 使用 RANK() 窗口函数为每个频道下的视频按观看次数排名。
  3. 选择每个频道下排名为 1 的视频。

考点

  1. 窗口函数:使用 RANK() 窗口函数来为每个频道下的视频排名。
  2. 聚合函数:使用 COUNT() 函数计算每个视频的观看次数。
  3. 分组和排序:使用 GROUP BY 和 ORDER BY 进行分组和排序。
  4. 子查询:使用子查询来过滤出排名为 1 的视频。

相关表结构如下:

  1. bilibili_t100 表(用户登录及会员标识表)

    • usr_id (VARCHAR): 用户ID
    • v_date (DATE): 登录日期(只有日期,没有时间)
    • m_flg (INT): 会员标志(0表示非会员,1表示会员)
  2. bilibili_t20 表(用户观看记录表)

    • usr_id (VARCHAR): 用户ID
    • v_id (VARCHAR): 视频ID
    • v_tm (DATETIME): 观看时间
  3. bilibili_t3 表(视频类型标签表)

    • v_id (VARCHAR): 视频ID
    • v_nm (VARCHAR): 视频名称
    • v_typ (VARCHAR): 视频类型

泛TGI概念计算 窗口函数 多表连接 left join distinct count /

bilibili_t100,用户登录及会员标识表

usr_id v_date m_flg
B12 2020-01-03 0
B12 2020-01-05 1
B15 2020-01-03 0
B15 2020-01-05 1

bilibili_t20,用户观看记录表

usr_id v_id v_tm
B1038 A17 2021-02-08 16:23:55
B791 A21 2021-02-11 23:24:24
B1260 A22 2021-02-04 01:20:47
B1116 A22 2021-02-13 19:34:28
B456 A22 2021-02-23 20:09:56

bilibili_t3,视频类型标签表

v_id v_nm v_typ
A01 消失的爱人-惊悚片-本·阿弗莱克 放映厅
A02 每天建模半小时-在家就能养活自己 IT
A03 溜溜哥-我的CTR进化史 汽车
A04 首次唱跳-七夕发糖 舞蹈
A05 古典舞-九儿-无道具 舞蹈

 成为会员,解锁300道大厂数分SQL真题

ID53 10月1日后再也没活跃过的用户  
简单 left join distinct count 时间日期 字节跳动
ID94 购买人数最多的商品类目  
简单 group by left join distinct count 聚合函数 多表连接 购物漏斗分析 小红书
ID138 整体搜索UV转化率  
困难 group by left join case when distinct count 百分比计算 电商搜索优化 京东
ID139 分关键词的搜索UV转化率  
困难 group by left join case when distinct count 百分比计算 电商搜索优化 京东
ID156 频道重合指数  
中等 left join distinct count / 多表连接 泛TGI概念计算 Bilibili

MySQL 8.0

00:00