SQL 刷题/【美团】评选春季档连续达标的长盛剧本
上一题下一题困难通过率 67%

【美团】评选春季档连续达标的长盛剧本

JOIN 连接聚合函数GROUP BY窗口函数日期函数排行榜面试真题

题目描述

来源:美团 SQL 面试真题

某连锁剧本杀店要在 2025 春季档评选“长盛剧本”。评选标准不是总场次或总评分,而是看一个剧本能连续多少个 ISO 周每周都达标。

春季档范围为 2025-W05 到 2025-W20,即 2025-01-27 至 2025-05-18。

达标周定义

同一本剧本在某个 ISO 周内,同时满足以下三条,才算达标周:

  • 该周开局数不少于 2 局。
  • 该周所有局的平均评分不少于 4.50,含等号,按局级评分计算算术平均。
  • 该周所有局的实际到场玩家数之和不少于 8 人。

连续达标定义

如果剧本在 N 个相邻 ISO 周内都属于达标周,则连续长度为 N。中间不能跳过任何一周。

如果同一剧本有多个并列最长的连续段,选择起始周最早的那一段。

数据表

t_script 剧本档案表

字段类型说明
script_idBIGINT剧本编号
script_nameVARCHAR(64)剧本名称
themeVARCHAR(16)主题:guofeng / reasoning / horror / emotion / mechanism
difficultyTINYINT官方难度 1~5
base_priceDECIMAL(7,2)单人单场基础售价

t_session 开局记录表

字段类型说明
session_idBIGINT局编号
script_idBIGINT剧本编号,关联 t_script.script_id
dm_nameVARCHAR(32)主持人昵称
start_timeDATETIME开局时间
end_timeDATETIME散场时间
actual_playersTINYINT实际到场玩家数
ratingDECIMAL(3,2)该局综合评分,范围 0.00~5.00

输出要求

只考虑 start_time 落在 2025-01-27 00:00:00(含)至 2025-05-19 00:00:00(不含)之间的局。

ISO 周以 MySQL YEARWEEK(date, 3) 为准:周一到周日,第一周必须含周四。

对每本剧本,找出春季档内最长连续达标周段,仅输出最长连续达标周数不少于 3 的剧本。

字段说明
script_id剧本编号
script_name剧本名称
theme主题
max_streak_weeks最长连续达标周数
streak_start_week连续段起始 ISO 周,格式 YYYY-Www
streak_end_week连续段结束 ISO 周,格式 YYYY-Www
weeks_session_cnt最长连续段内所有周的开局总数
weeks_avg_rating最长连续段内所有局的算术平均评分,保留 2 位

排序规则

  1. max_streak_weeks 降序。
  2. streak_start_week 升序。
  3. script_id 升序。

数据样例

当前运行环境
script_idPKBIGINTscript_nameVARCHAR(64)themeVARCHAR(16)difficultyTINYINTbase_priceDECIMAL(7, 2)
1长夜来信reasoning4268
2雾港沉船horror4298
3春山旧案guofeng3228
4月下机关城mechanism5328
5无人回声emotion2198
输入数据显示 5 / 5
SQL 编辑器正在保存草稿...
正在加载 SQL 编辑器...

运行你的 SQL 查询后,结果将显示在这里