首页/新闻资讯/正文详情

SQL 窗口函数实战:3 个能直接跑的例子,带真实结果

发布时间:2026/9/27 2:02:28 来源:云帆数科 栏目:资讯中心
SQL 窗口函数实战:3 个能直接跑的例子,带真实结果
窗口函数是 SQL 里从会写到写得好的分水岭。但网上讲窗口函数的文章大多只贴语法不给可运行的数据看完还是不会用。这篇文章的 3 个例子来自我自己搭的一套电商测试库用户/商品/订单/明细/行为 5 张表每一条 SQL 都真跑过结果一并贴出。一、给每个用户的订单编号ROW_NUMBER需求想看每个用户的第几单用于识别首单、复购。SELECTu.nameAS用户名,o.order_dateAS下单日期,ROW_NUMBER()OVER(PARTITIONBYo.user_idORDERBYo.order_date,o.id)AS第几单FROMorders oJOINusers uONu.ido.user_idORDERBY用户名,第几单;要点PARTITION BY决定分组边界ORDER BY决定组内排序。排序字段如果可能重复一定要再补一个唯一列比如 id否则编号会不稳定。二、算环比增长率LAG需求按月看销售额并算出相对上月的增长率。WITHmAS(SELECTsubstr(order_date,1,7)AS月份,SUM(pay_amount)AS销售额FROMordersWHEREstatus已完成GROUPBYsubstr(order_date,1,7))SELECT月份,ROUND(销售额,2)AS销售额,ROUND(100.0*(销售额-LAG(销售额)OVER(ORDERBY月份))/LAG(销售额)OVER(ORDERBY月份),1)AS环比增长百分比FROMmORDERBY月份;要点第一个月没有上月结果自然是 NULL——别急着用 IFNULL 填 00 和没有数据是两回事报表里含义不同。三、找出连续两个月都有下单的用户CTE 自连接WITHumAS(SELECTDISTINCTuser_id,substr(order_date,1,7)AS月份FROMordersWHEREstatus已完成)SELECTDISTINCTu.nameAS用户名FROMum aJOINum bONa.user_idb.user_idANDb.月份strftime(%Y-%m,date(a.月份||-01,1 month))JOINusers uONu.ida.user_id;要点先去重到用户-月份再自连接比直接在两百万行明细上做关联快得多。能先缩小数据规模就别一上来就 JOIN 大表。四个最容易踩的坑把窗口函数塞进 WHERE窗口函数在 WHERE 之后才计算必须用子查询或 CTE 包一层再过滤。PARTITION BY 忘了写整张表被当成一个组排名全乱。ROW_NUMBER 与 RANK 混用并列时 ROW_NUMBER 仍连续编号RANK 会跳号1,1,3。NULL 参与排序不同数据库对 NULL 的排序位置默认不同需要显式指定 NULLS FIRST/LAST。怎么验证自己写对了最省事的办法是先跑一遍看行数算排名时行数应该与明细行数一致算分组聚合时行数应该等于组数。对不上多半就是 GROUP BY 或 PARTITION BY 写漏了。上面 3 个例子来自我整理的一套 SQL 进阶题库20 道题 参考答案 一张可直接跑的电商测试库而且每道题的答案都真实执行过、运行结果列名/行数/数据原样附在包里还配了 40 道面试题。在 CSDN 下载里搜索「SQL实战进阶」即可找到。

相关推荐

Proteus 8.15 安装与Keil联合仿真完整教程
Proteus 8.15 安装与Keil联合仿真完整教程

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/27 2:02:22

告别古法编程:嵌入式软件开发现代化实战指南
告别古法编程:嵌入式软件开发现代化实战指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/27 2:02:22

MATLAB | R2026b 更新了哪些有趣的新东西
MATLAB | R2026b 更新了哪些有趣的新东西

MATLAB R2026b 来啦,来看看有啥有趣的新东西叭~ 1 更方便的工具管理 新版本可以使用 mpminstall 和 mpmuninstall 函数下载安装和卸载工具包,有点类似 pip install,举个例子: 安装一下我写的热图绘制工具。这里即使提示文本是中… · 2026/9/27 2:02:22

BugKu——split_all
BugKu——split_all

一、题目二、方法下载得到一张png图片,打开无显示。使用WinHex查看,发现其中又gif图片头部常有的字节。【常见图片格式文件头速查表】格式文件头(十六进制)ASCII 特征典型扩展名PNG89 50 4E 47 0D 0A 1A 0A.PNG.....pngJPEG/JPGFF… · 2026/9/27 2:35:28

3步搞定wordpress开启mu,小白避坑指南
3步搞定wordpress开启mu,小白避坑指南

3步搞定wordpress开启mu,小白避坑指南 很多老板想做网站,听到代码就头大。别怕,wordpress开启mu其实没那么玄乎。这份避坑指南专为不会代码的你准备。 1. 啥是MU插件?别被名字吓到… · 2026/9/27 2:35:22

仲夏CMS | 一套编辑器,全站通用 —— 编辑器功能与用法完全指南
仲夏CMS | 一套编辑器,全站通用 —— 编辑器功能与用法完全指南

ZXSORA CMS 功能介绍 2026-09-25一套编辑器,全站通用 —— 编辑器功能与用法完全指南覆盖 16 个模块的写作与互动入口 19 项功能 齿轮自定义 一键复原配图均为实测截取 全部于本地站点逐页验证,零脚本报错第一节它是什么博客、论坛、圈子、资讯、文… · 2026/9/27 2:35:22

如何快速上手DSH-better-sidebar:5分钟安装+三大常见坑(pnpm构建拦截/双挂载/node-pty)完整教程
如何快速上手DSH-better-sidebar:5分钟安装+三大常见坑(pnpm构建拦截/双挂载/node-pty)完整教程

如何快速上手DSH-better-sidebar:5分钟安装三大常见坑(pnpm构建拦截/双挂载/node-pty)完整教程 【免费下载链接】DSH-better-sidebar 开放的侧边栏底座,支持三方拓展注册新侧边栏页面。内置文件渲染编辑/终端/侧边对话/Git/子代理… · 2026/9/27 2:35:22

揪出Flaky测试:TestSprite test flaky稳定性检测实战,10次重放给出稳定度评分
揪出Flaky测试:TestSprite test flaky稳定性检测实战,10次重放给出稳定度评分

揪出Flaky测试:TestSprite test flaky稳定性检测实战,10次重放给出稳定度评分 【免费下载链接】testsprite-cli Official TestSprite CLI — AI-powered automated testing from your terminal 项目地址: https://gitcode.com/gh_mirrors/te/testsprit… · 2026/9/27 2:35:16

做新媒体的小说网站实战案例:搞定备案不头疼
做新媒体的小说网站实战案例:搞定备案不头疼

做新媒体的小说网站实战案例:搞定备案不头疼 备案号还没下来,服务器就被运营商断网,这种憋屈事你遇到过吗?做新媒体的小说网站,最让人头大的往往不是代码写不出来,而是备案流程一头雾水。我见过太多创业者,站点做得花里胡哨,结果卡在工信部ICP备案… · 2026/9/27 2:35:04

MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现
MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现

简介:这套Matlab仿真工具完整呈现雷达信号脉冲压缩过程,从线性调频(LFM)信号生成、目标回波仿真到匹配滤波压缩处理均有可运行代码支撑,面向电子信息工程、计算机、数学等专业学生,适用于课程设计、期末大作… · 2026/9/27 0:00:01

汕头网站建设制作厂家避坑指南:5大注意事项救急
汕头网站建设制作厂家避坑指南:5大注意事项救急

汕头网站建设制作厂家避坑指南:5大注意事项救急 改个需求建站公司拖一周,这种憋屈事我见得太多了。 很多汕头老板找本地建站团队,签合同前看着方案挺美,一上线就变脸。 今天不聊虚的,直接拆解找 汕头网站建设制作厂家 时的5个核心 注意事项… · 2026/9/27 0:00:01

多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习
多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习

简介:基于PyTorch的多模态虚假新闻检测项目完整代码包,面向自然语言处理与计算机视觉交叉方向的开发者、科研人员及毕业设计选题者,解决社交媒体中文本与图像联合识别虚假新闻的问题。系统以BERT预训练模型提取文本语义特征,以Res… · 2026/9/27 0:00:01

MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现
MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现

简介:这套Matlab仿真工具完整呈现雷达信号脉冲压缩过程,从线性调频(LFM)信号生成、目标回波仿真到匹配滤波压缩处理均有可运行代码支撑,面向电子信息工程、计算机、数学等专业学生,适用于课程设计、期末大作… · 2026/9/27 0:00:01

汕头网站建设制作厂家避坑指南:5大注意事项救急
汕头网站建设制作厂家避坑指南:5大注意事项救急

汕头网站建设制作厂家避坑指南:5大注意事项救急 改个需求建站公司拖一周,这种憋屈事我见得太多了。 很多汕头老板找本地建站团队,签合同前看着方案挺美,一上线就变脸。 今天不聊虚的,直接拆解找 汕头网站建设制作厂家 时的5个核心 注意事项… · 2026/9/27 0:00:01

多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习
多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习

简介:基于PyTorch的多模态虚假新闻检测项目完整代码包,面向自然语言处理与计算机视觉交叉方向的开发者、科研人员及毕业设计选题者,解决社交媒体中文本与图像联合识别虚假新闻的问题。系统以BERT预训练模型提取文本语义特征,以Res… · 2026/9/27 0:00:01

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码