窗口函数太难记?3个“填空式”万能模板,直接抄作业!

本文涉及的产品
RDS MySQL DuckDB 分析主实例,集群系列 4核8GB
RDS MySQL DuckDB 分析主实例,基础系列 4核8GB
RDS DuckDB + QuickBI 企业套餐,8核32GB + QuickBI 专业版
简介: 新手友好SQL窗口函数速查!3大模板搞定排名(ROW_NUMBER/RANK)、累计求和(SUM OVER)、跨期对比(LAG/LEAD),填空即用,避坑指南含MySQL 8.0版本提醒,告别子查询,一行代码跑通!

📌 今日关键词: 窗口函数模板、SQL速查、新手友好、排名计算、累计求和

大家好呀!我是数据库小学妹 👋

上午我们硬核攻克了​窗口函数(Window Function),是不是感觉脑子被 OVERPARTITION BY 这些单词塞得满满当当?😵
💫别担心!记不住复杂的语法很正常,其实90%的窗口函数场景,只需要记住3个“填空题”模板就够了!✍️

今天这篇就是专门为你准备的​“防忘速查小抄”​。遇到问题时,直接把字段名填进去,一行代码都不用改,直接复制就能跑!🚀

📝 模板一:万能排名公式(Top N 问题)

适用场景: 每个班级/部门取前3名;找出销量最高的产品。
核心逻辑: ROW_NUMBER() / RANK() + PARTITION BY 分组 + ORDER BY 排序

-- 【万能模板】
SELECT *
FROM (
    SELECT1,2,
        ROW_NUMBER() OVER (PARTITION BY 分组字段 ORDER BY 排序字段 DESC) AS 排名别名
    FROM 表名
) AS 临时表别名
WHERE 排名别名 <= N; -- N代表你想取的前几名

💡 填空示范(取每个班级前2名):

SELECT *
FROM (
    SELECT 
        class, student_name, score,
        ROW_NUMBER() OVER (PARTITION BY class ORDER BY score DESC) AS rn
    FROM class_scores
) AS ranked
WHERE rn <= 2;

📝 模板二:累计求和公式(移动平均/年累计)

适用场景: 计算每天的“累计销售额”;计算每月相比上月的增长率。
核心逻辑: SUM() / AVG() + ORDER BY + ROWS 窗口范围

-- 【万能模板】
SELECT 
    时间字段,
    数值字段,
    SUM(数值字段) OVER (
        ORDER BY 时间字段 
        ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW
    ) AS 累计别名
FROM 表名;

💡 填空示范(计算月累计销售额):

SELECT 
    month,
    amount,
    SUM(amount) OVER (
        ORDER BY month 
        ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW
    ) AS cumulative_amount
FROM sales;

📝 模板三:跨行对比公式(同比/环比/上期对比)

适用场景: 本月比上月多了多少?(核心是 LAGLEAD
核心逻辑: LAG() 向上取数,LEAD() 向下取数。

-- 【万能模板】
SELECT 
    时间字段,
    当前数值,
    LAG(当前数值, 1) OVER (ORDER BY 时间字段) AS 上期数值, -- 1代表取上一行
    当前数值 - LAG(当前数值, 1) OVER (ORDER BY 时间字段) AS 差值
FROM 表名;

💡 填空示范(对比上个月的销量):

SELECT 
    month,
    sales,
    LAG(sales, 1) OVER (ORDER BY month) AS last_month_sales,
    sales - LAG(sales, 1) OVER (ORDER BY month) AS diff
FROM monthly_sales;

⚠️ 避坑特别提醒(新手必看!)

虽然模板好用,但小学妹还是要提醒你两个​“防翻车”​的小细节:

  1. MySQL版本号:
    1. 坑点: 如果你的MySQL版本是 5.7 或更早,上面的代码会直接报错!
    2. 解法: 窗口函数是 MySQL 8.0+ 才有的新特性。如果你还在用旧版本,请先升级,或者用自连接(Self-Join)这种笨办法来实现(虽然很难写,但能跑)。
  2. CTE的使用:
    1. 坑点: 为什么不能直接在 WHERE 里写 WHERE rn <= 2
    2. 解法: 因为SQL的执行顺序,WHERESELECT 之前。所以必须把带窗口函数的查询包在一个子查询(或者用 WITH 语句)里,先算出排名,再在外面一层 WHERE 过滤。

👋 我是数据库小学妹一个用设计师思维学数据库的转行人。我们一起,把复杂的技术变得简单有趣!💕

本文示例基于 ​MySQL​ 8.0。版本低于8.0不支持​​窗口函数,建议升级或使用其他方法替代。

相关文章
|
8天前
|
缓存 人工智能 自然语言处理
我对比了8个Claude API中转站,踩了不少坑,总结给你
本文是个人开发者耗时1周实测的8大Claude中转平台横向评测,聚焦Claude Code真实体验:以加权均价(¥/M token)、内部汇率、缓存支持、模型真实性及稳定性为核心指标。
3309 20
|
20天前
|
人工智能 自然语言处理 安全
Claude Code 全攻略:命令大全 + 实战工作流(建议收藏)
本文介绍了Claude Code终端AI助手的使用指南,主要内容包括:1)常用命令如版本查看、项目启动和更新;2)三种工作模式切换及界面说明;3)核心功能指令速查表,包含初始化、压缩对话、清除历史等操作;4)详细解析了/init、/help、/clear、/compact、/memory等关键命令的使用场景和语法。文章通过丰富的界面截图和场景示例,帮助开发者快速掌握如何通过命令行和交互界面高效使用Claude Code进行项目开发,特别强调了CLAUDE.md文件作为项目知识库的核心作用。
17722 60
Claude Code 全攻略:命令大全 + 实战工作流(建议收藏)
|
1天前
|
SQL 人工智能 弹性计算
阿里云发布 Agentic NDR,威胁检测与响应进入智能体时代
欢迎前往阿里云云防火墙控制台体验!
1153 2
|
4天前
|
人工智能 JSON BI
DeepSeek V4 来了!超越 Claude Sonnet 4.5,赶紧对接 Claude Code 体验一把
JeecgBoot AI专题研究 把 Claude Code 接入 DeepSeek V4Pro 的真实体验与避坑记录 本文记录我将 Claude Code 对接 DeepSeek 最新模型(V4Pro)后的真实体验,测试了 Skills 自动化查询和积木报表 AI 建表两个场景——有惊喜,也踩
1721 8
|
15天前
|
人工智能 JavaScript Ubuntu
低成本搭建AIP自动化写作系统:Hermes保姆级使用教程,长文和逐步实操贴图
我带着怀疑的态度,深度使用了几天,聚焦微信公众号AIP自动化写作场景,写出来的几篇文章,几乎没有什么修改,至少合乎我本人的意愿,而且排版风格,也越来越完善,同样是起码过得了我自己这一关。 这个其实OpenClaw早可以实现了,但是目前我觉得最大的区别是,Hermes会自主总结提炼,并更新你的写作技能。 相信就冲这一点,就值得一试。 这篇帖子主要就Hermes部署使用,作一个非常详细的介绍,几乎一步一贴图。 关于Hermes,无论你赞成哪种声音,我希望都是你自己动手行动过,发自内心的选择!
3156 29
|
2天前
|
人工智能 缓存 BI
Claude Code + DeepSeek V4-Pro 真实评测:除了贵,没别的毛病
JeecgBoot AI专题研究 把 Claude Code 接入 DeepSeek V4Pro,跑完 Skills —— OA 审批、大屏、报表、部署 5 大实战场景后的真实体验 ![](https://oscimg.oschina.net/oscnet/up608d34aeb6bafc47f
1336 3
Claude Code + DeepSeek V4-Pro 真实评测:除了贵,没别的毛病
|
4天前
|
机器学习/深度学习 缓存 测试技术
DeepSeek-V4开源:百万上下文,Agent能力比肩顶级闭源模型
DeepSeek-V4正式开源!含V4-Pro(1.6T参数)与V4-Flash(284B参数)双版本,均支持百万token上下文。首创混合注意力架构,Agent能力、世界知识与推理性能全面领先开源模型,数学/代码评测比肩顶级闭源模型。
1695 6
|
5天前
|
人工智能 测试技术 API
阿里Qwen3.6-27B正式开源:网友直呼“太牛了”!
阿里云千问3.6系列重磅开源Qwen3.6-27B稠密大模型!官网:https://t.aliyun.com/U/JbblVp 仅270亿参数,编程能力媲美千亿模型,在SWE-bench等权威基准中表现卓越。支持多模态理解、本地部署及OpenClaw等智能体集成,已开放Hugging Face与ModelScope下载。