mysql8.0 窗口函数排序 leetcode笔记

表:Stadium
±--------------±--------+
| Column Name | Type |
±--------------±--------+
| id | int |
| visit_date | date |
| people | int |
±--------------±--------+
visit_date 是表的主键

每日人流量信息被记录在这三列信息中:序号 (id)、日期 (visit_date)、 人流量 (people) 每天只有一行记录,日期随着id 的增加而增加

编写一个 SQL 查询以找出每行的人数大于或等于 100 且 id 连续的三行或更多行记录。

返回按 visit_date 升序排列的结果表。

查询结果格式如下所示。

Stadium table:
±-----±-----------±----------+
| 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 |
±-----±-----------±----------+

Result table:
±-----±-----------±----------+
| 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 连续的记录。

题解:

with t1 as (
select
    id,
    visit_date,
    people,
#求出差值,因为id一定不会相同,所以使用最熟悉的rank就好
#id-rank 意思是  id减去rank排序的差值  真是妙 我做个笔记--------------------
    id-rank() over(order by id) rk
from stadium
where people >= 100
)
select
    id,
    visit_date,
    people
from t1
#where条件过滤出条数大于3的
where rk in (
select rk from t1 group by rk having count(1) >= 3);
### 关于 LeetCode 学习笔记及相关资源 对于希望深入学习并通过 LeetCode 提升编程能力的人来说,找到合适的笔记和资源是非常重要的。以下是关于 LeetCode 笔记本或学习笔记 PDF 的相关内容: #### 1. **LeetCode 题目与 Python 编程** Python 是一种广泛应用于算法练习的语言,许多开发者通过它来解决 LeetCode 上的各种问题[^1]。这些笔记通常会记录解题思路、代码实现以及可能的优化方向。 #### 2. **高效记录与整理编程学习笔记的方法** 为了更好地掌握 LeetCode 中的知识点,可以采用一些高效的笔记记录方式。这不仅有助于巩固所学内容,还能够方便后续查阅。例如: - 使用 Markdown 文件创建结构化的文档。 - 将每道题目分为几个部分:问题描述、解决方案分析、代码实现及复杂度评估[^2]。 #### 3. **获取 LeetCode 笔记本或 PDF 资源的方式** 虽然网络上存在大量免费的学习资料,但需要注意版权问题。如果想下载高质量的 LeetCode 学习笔记 PDF 或其他形式的资源,可以通过以下途径查找: - 访问 GitHub 平台,在其中搜索关键词如 “LeetCode solutions” 或者特定语言版本(比如 Python)的相关仓库。 - 加入技术社区或者论坛讨论区,与其他成员分享彼此制作的优质笔记文件。 - 利用搜索引擎输入精确查询词组尝试定位到公开发布的电子书链接地址[^3]。 ```python # 示例代码片段展示如何保存本地Markdown格式化后的数据作为PDF导出功能之一 from markdown import markdown import pdfkit def save_as_pdf(text, output_filename='output.pdf'): html_text = markdown(text) config = pdfkit.configuration(wkhtmltopdf="C:\\Program Files\\wkhtmltopdf\\bin\\wkhtmltopdf.exe") # 替换为你实际安装路径 options = { 'page-size': 'Letter', 'margin-top': '0.75in', 'margin-right': '0.75in', 'margin-bottom': '0.75in', 'margin-left': '0.75in' } with open(output_filename,'wb') as f: pdf_content=pdfkit.from_string(html_text,False,options=options,configuration=config) f.write(pdf_content) example_note=""" # 动态规划入门经典案例 Fibonacci Sequence (斐波那契数列) 给定正整数 n ,返回第n项Fibonacci数值... """ save_as_pdf(example_note,"fibonacci_example.pdf") ``` 上述脚本演示了一个简单的例子,说明怎样把一段文字转换成HTML再进一步加工成为PDF档存盘操作过程[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值