sql练习生第一次记录 601. 体育馆的人流量困难相关标签相关企业SQL SchemaPandas Schema表Stadium------------------------ | Column Name | Type | ------------------------ | id | int | | visit_date | date | | people | int | ------------------------ visit_date 是该表中具有唯一值的列。 每日人流量信息被记录在这三列信息中序号(id)、日期(visit_date)、人流量(people) 每天只有一行记录日期随着 id 的增加而增加编写解决方案找出每行的人数大于或等于100且id连续的三行或更多行记录。返回按visit_date升序排列的结果表。查询结果格式如下所示。示例 1:输入Stadium表: ----------------------------- | id | visit_date | people | ----------------------------- | 1 | 2017-01-01 | 10 | | 2 | 2017-01-02 | 109 | | 3 | 2017-01-03 | 150 | | 4 | 2017-01-04 | 99 | | 5 | 2017-01-05 | 145 | | 6 | 2017-01-06 | 1455 | | 7 | 2017-01-07 | 199 | | 8 | 2017-01-09 | 188 | -----------------------------输出----------------------------- | id | visit_date | people | ----------------------------- | 5 | 2017-01-05 | 145 | | 6 | 2017-01-06 | 1455 | | 7 | 2017-01-07 | 199 | | 8 | 2017-01-09 | 188 | -----------------------------解释 id为 5、6、7、8 的四行 id 连续并且每行都有 100 的人数记录。 请注意即使第 7 行和第 8 行的 visit_date 不是连续的输出也应当包含第 8 行因为我们只需要考虑 id 连续的记录。 不输出 id 为 2 和 3 的行因为至少需要三条 id 连续的记录。好从这里开始首先我看题目读表信息和要求看完直接分析难点sql能不能计数我的思路people大于100count计数加1小于count等于0我不确定能不能这样做等于没思路练的太少了。直接去看答案吧id - row_number()作为分组标记连续 id 的行差值相同分到同一组 连续统计还真有所有没实现办法直接看答案吧不看答案我根本不知道有这个玩意首选性能最佳的解法核心技巧分组编号法连续序列分组经典解法思路先过滤出people 100的行用id - row_number()作为分组标记连续 id 的行差值相同分到同一组统计每组行数只保留行数≥3 的分组最后输出对应原始数据。WITH filter_data AS ( SELECT *, ROW_NUMBER() OVER(ORDER BY id) rn FROM Stadium WHERE people 100 ), group_data AS ( SELECT *, id - rn grp FROM filter_data )SELECT id, visit_date, peopleFROM group_dataWHERE grp IN (SELECT grp FROM group_data GROUP BY grp HAVING COUNT(*)3) ORDER BY visit_date;递归 CTEMySQL8/PG少量数据、需要递归溯源差大数据禁用面试标准答案推荐数仓 / Spark/Hive 大数据场景优先id - row_number()差值分组日期连续、时间连续场景LAG() SUM累计断点万能方案老旧无窗口函数数据库临时用自连接过渡。id - ROW_NUMBER() OVER(ORDER BY id) AS grp详解id - ROW_NUMBER() OVER(ORDER BY id) AS grp连续分组原理1. 核心结论对于连续递增无断档的数字 idid - 行号的计算结果完全相同 一旦 id 中间出现空缺断裂下一段连续数字会生成一个全新的grp值天然把连续区间划分成独立分组。2. 拿你这道题过滤后的数据演算过滤条件people 100筛选出 6 条数据表格原始 id235678第一步ROW_NUMBER () 按 id 排序生成连续行号 rn开窗函数ROW_NUMBER() OVER(ORDER BY id)无视 id 是否断裂永远从 1 开始生成不间断自增数字表格idrn (行号)213253647586第二步计算 grp id - rn表格idrngrp id - rn分组归属211组 1321组 1532组 2642组 2752组 2862组 2分组结果grp1id2、3连续 2 条不足 3 条过滤掉grp2id5、6、7、8连续 4 条满足≥3 条全部输出3. 为什么连续 id 差值固定数学逻辑假设一段无断裂连续 idx, x1, x2, x3对应行号n, n1, n2, n3第一条x - n第二条(x1) - (n1) x - n第三条(x2) - (n2) x - n所有行差值完全相等分到同一组。一旦中间缺 id比如 3 之后直接跳到 5跳过 4 下一段第一个 id5行号是 35-32和上一组1区分开新分组诞生。4. 优缺点 使用限制优点只一层窗口函数计算量最小Hive/Spark 大数据场景性能最优代码极简一行完成分组标记。限制关键面试考点仅适用于纯数字连续序列id、流水号不能直接用于日期 / 时间连续场景。 比如日期2026-07-01、2026-07-02、2026-07-04日期无法直接做减法必须改用LAG()SUM(断点标记)方案。5. 和 LAG 断点法对比区分数字 id 连续id - ROW_NUMBER()最简最优日期 / 时间连续、不规则序列用LAG() 判断断点 SUM累计求和分组万能通用方案。

相关新闻

最新新闻

美团四轮面试全流程解析:从技术面到HR面的准备策略

美团四轮面试全流程解析:从技术面到HR面的准备策略

美团四轮面试面经,这个话题我自己从准备到真正拿到offer,前前后后花了三周。回想起来,四轮面试每一轮的考察重点完全不一样:第一轮看基本功,第二轮看项目深度,第三轮看思维和潜力,第四轮看匹配度…

2026/8/30 22:34:13
国家二级WPS试题集.zip打不开?从解压到刷题全流程指南

国家二级WPS试题集.zip打不开?从解压到刷题全流程指南

简介:本资源是专为备考国家计算机等级考试二级WPS Office科目的考生设计的实战型题库资料包,聚焦长文档排版、邮件合并、样式引用、海报背景设计等高频考点,解决考生对真题缺失、操作路径不熟、新版题型把握不准等核心痛点。压缩包共含37套完…

2026/8/30 22:34:13
架构设计不是天赋:一套可复制的技能树与实践方法

架构设计不是天赋:一套可复制的技能树与实践方法

假设你是一个写了三五年业务代码的后端工程师,日常 CRUD 得心应手,搜索引擎也玩得明白,但某天评审会上,技术负责人突然问你:“你这个系统的架构是什么?为什么订单模块和支付模块要这样分?”你发…

2026/8/30 22:34:13
腾讯音乐秋招数据科学岗笔试题复盘:从统计概率到业务闭环

腾讯音乐秋招数据科学岗笔试题复盘:从统计概率到业务闭环

每年这个时候,都是秋招笔试最密集的阶段。作为一个连续参加过两届大厂数据科学岗笔试、也陪身边不少学弟学妹复盘过题目的老数据人,我对这套腾讯音乐秋招数据科学岗第二批笔试题印象挺深。它的风格很有代表性:不搞偏题怪题,但非常…

2026/8/30 22:34:13
Qx效率启动器技术拆解:从架构设计到二次开发实践

Qx效率启动器技术拆解:从架构设计到二次开发实践

Qx效率启动器是一款在 GitHub 上开源的电脑系统效率启动器。很多人第一眼看到它的功能列表,会以为这只是“快速启动应用”的工具,但它明显不是普通启动器:应用/文件搜索之外,还集成了剪贴板历史、截图录屏、RSS 订阅、AI 对话&…

2026/8/30 22:34:13
【实战】STM32 ADC高精度采集全链路优化:从9.2bit到13.8bit,PT100采样从±2.1℃压到±0.15℃

【实战】STM32 ADC高精度采集全链路优化:从9.2bit到13.8bit,PT100采样从±2.1℃压到±0.15℃

STM32内置的12位ADC,实际有效位数往往只有9~10bit,温度采集现场跳动2℃是常态。笔者团队在工业网关项目中实测,通过"独立精密基准源四阶无源滤波PCB分区64倍过采样自适应卡尔曼"五招组合,把PT100测温通道的有效位数&…

2026/8/30 22:29:13