admin管理员组

文章数量:1437148

【SQL周周练】一句 SQL 如何帮助 5 个人买到电影院最好的座位?

大家好,我是“蒋点数分”,多年以来一直从事数据分析工作。从今天开始,与大家持续分享关于数据分析的学习内容。

本文是第 3 篇,也是【SQL 周周练】系列的第 3 篇。该系列是挑选或自创具有一些难度的 SQL 题目,一周至少更新一篇。后续创作的内容,初步规划的方向包括:

后续内容规划

1.利用 Streamlit 实现 Hive 元数据展示SQL 编辑器、 结合Docker 沙箱实现数据分析 Agent 2.时间序列异常识别、异动归因算法 3.留存率拟合、预测、建模 4.学习 AB 实验、复杂实验设计等 5.自动化机器学习、自动化特征工程 6.因果推断学习 7. ……

欢迎关注,一起学习。

第 3 期题目

题目来源:改进的题目,增加了电影院最优选座的逻辑

一、题目介绍

看到这个题目,有同学可能会吐槽:你小子拉了,第 3 期就出现常见题目。这里我解释一下,【SQL 周周练】系列的确是想输出一系列我认为有挑战性有意思的题(所谓挑战性是对于大多数数分,SQL 资深者除外)我不想照搬 LeetCode 或牛客的题,更不想写 “学生表” 那类题。

奈何我想象力有限(未来可能增加一个 SQL 破案系列,目前手里有几篇草稿,比如通过行车轨迹计算罪案策划地点)对于市面上的题,如果增加一些创新点,我觉得也值得跟大家分享。比如这道题,我就增加了“最优选座”的逻辑。下面直接说题:

有一张表记录了电影院某个厅某个场次的座位售出情况,假设有 5 个人来买票,请您用 SQL 输出所有可以选择的 5 个连续座位,还要按照一定规则根据座位的位置进行优劣排序。列名如下(这里不显示日期、放映厅名和场次等冗余信息):

列名

数据类型

注释

seat_no

string

座位号(格式:行号码-列号码)

is_saled

int

是否售出(0-未销售,1-已售出)

说明:

  1. 为了简化问题,假设不存在“过道”(以后有机会再"水"一篇文章)
  2. 为了简化问题,“最优选座”的逻辑是——最优点在(总行数*0.65,总列数*0.5)所选座位相对于它的“欧式距离”(行方向与列方向的权重比是 3:2)之和最小者

二、题目思路

想要答题的同学,可以先思考答案

本文标签: SQL周周练一句 SQL 如何帮助 5 个人买到电影院最好的座位