书中隐藏的 SQL 开窗函数秘密,ChatGPT 找到了

news2024/11/18 22:54:14

平时写出这份 T-SQL 的开窗函数脚本,大多数开发者都会引以为傲了:

SELECT empid, ordermonth, qty, 
  SUM(qty) OVER (PARTITION BY empid 
                 ORDER BY ordermonth 
                 ROWS BETWEEN UNBOUNDED PRECEDING 
                          AND CURRENT ROW) AS run_sum_qty, 
  AVG(qty) OVER (PARTITION BY empid 
                 ORDER BY ordermonth 
                 ROWS BETWEEN UNBOUNDED PRECEDING 
                          AND CURRENT ROW) AS run_avg_qty, 
  MIN(qty) OVER (PARTITION BY empid 
                 ORDER BY ordermonth 
                 ROWS BETWEEN UNBOUNDED PRECEDING 
                          AND CURRENT ROW) AS run_min_qty, 
  MAX(qty) OVER (PARTITION BY empid 
                 ORDER BY ordermonth 
                 ROWS BETWEEN UNBOUNDED PRECEDING 
                          AND CURRENT ROW) AS run_max_qty 
FROM Sales.EmpOrders;

知道开窗函数能解决很多有趣的问题,比如排名,排班,去重等等。但很多场景,也不是都有机会去体验

所以更多的,开窗函数对于开发者来说,是个神秘的武器。能有机会写出上面的脚本,所在的领域和数字交易一定结合得非常紧密,电商,银行,证券

但是,作为数据分析师,ETLer, 这些再普通不过,甚至是必备技能,仅仅满足写出来,未免对自己要求有点低。

怎么去优化,写得更有调理,更简洁,始终要放在备忘录里

可,上面的 SQL 还要怎么优化呢,怎么写得更简洁呢?其实我也不知道。直到今天,我尝试用 AskYourPDF 这么一款 ChatGPT Plugin 我才恍然一悟

说起 T-SQL 开窗函数,那就不得不提这本书《

microsoft-sql-server-2012-high-performance-t-sql-using-window-functions


de06a9c2c28457288f2f978ce925ebe6.png

你要买的话,一定认准了,作者是 Ben 大叔

2cebb039dd929aa18db9db6cdadcdd8d.png

我拿到这本书的 PDF 版本,想着页数不多,要不请 ChatGPT 帮我读一读。于是我就裁剪了第一章,丢给 AskYourPDF

有个前提,AskYourPDF 是个阅读 PDF 的插件,它的极致能支持 200页 PDF, 所以我首先用一款免费的在线分割 PDF 软件,将它第一章给切下来:

512cce9d3b6dce739d5b50e52e8d079e.png

注意,这里极力推荐这款软件,它是免费的,网址在这里:

https://www.ilovepdf.com

接着,我把这份切割好的 PDF,上传到 AskYourPDF 官网

31faa6e236b3d7123ef541205e157570.png

官网:https://askyourpdf.com/upload

前面我试过 ChatWithPDF, 好用是好用:

如何用 ChatGPT 帮你10分钟读完数据库论文 <- 戳它了解

但如果我要用本地文件,就比较抓狂,需要把 PDF 上传到一个可以被 ChatGPT 访问到的地方,试过很多服务,都不行

最终还是自带接收 PDF 的 AskYourPDF 。把 PDF 上传,记住 上图中 2 标注的文档 ID。在与 ChatGPT 对话时,告诉它这个 ID,即可:

ec46fc60963a58f12064be4d7ec904f7.png

别忘记启用 AskYourPDF 插件

5f44271a5628d5b6876cfe3bbfa93e9b.png

我请 ChatGPT 总结这一章的内容,于是就出现了开头的例子。

我注意到总结时,它说到“窗口定义的重用”,我就很好奇,追问下去,它给出了文档中的例子:

7bbd97d18e93489f010bebe34f290724.png

最终,代码是这样的:

SELECT empid, ordermonth, qty, 
  SUM(qty) OVER W1 AS run_sum_qty, 
  AVG(qty) OVER W1 AS run_avg_qty, 
  MIN(qty) OVER W1 AS run_min_qty, 
  MAX(qty) OVER W1 AS run_max_qty 
FROM Sales.EmpOrders 
WINDOW W1 AS ( PARTITION BY empid 
               ORDER BY ordermonth 
               ROWS BETWEEN UNBOUNDED PRECEDING 
                        AND CURRENT ROW );

是不是看着舒服多了?

求证下 SQL Server 官网:

d8b424f47ce0c0cb4da4b8a2d8f8a0b0.png

确有此语法,但需将 SQL Server 兼容性级别提到 160

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/592016.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

当Windows里运行spark程序长时间不报错也不出结果(如何将scala程序打包放在虚拟机里运行)

当Windows里运行spark程序长时间不报错也不出结果 Windows内存不足也可能导致Spark程序长时间没有报错也没有输出结果的情况。Spark在处理大规模数据时需要大量的内存&#xff0c;如果可用内存不足&#xff0c;可能会导致程序运行缓慢或无法完成任务。 要确认内存是否是问题所…

80211(b/a/n/ac)速率介绍

80211&#xff08;b/a/n/ac&#xff09;速率介绍 1.第一代wifi标准 80211&#xff08;80211b&#xff09;&#xff08;2.4G&#xff09; 1997年完成&#xff0c;传输速率支持1Mbps 和 2Mbps。支持采用FHSS&#xff08;跳频&#xff09;和DSSS&#xff08;直接序列扩频&#x…

【工作流】Activiti工作流简介以及Spring Boot 集成 Activiti7

文章目录 前言一、activiti介绍二、工作流引擎三、BPMN四、数据库五、Spring Boot 集成 Activiti7安装插件引入依赖配置文件 总结 前言 什么是工作流&#xff1f; 工作流指通过计算机对业务流程进行自动化管理&#xff0c;实现多个参与者按照预定义的流程去自动执行业务流程。 …

冲击百万大奖!广州·琶洲算法大赛赛题讲解会,7场直播直击命题重点

‍‍第二届广州琶洲算法大赛是由广州市人民政府主办、海珠区人民政府和百度公司等单位联合承办的赛事&#xff0c;旨在为企业、高校师生、广大开发者提供展示技术能力、开展跨界交流、促进创业就业的平台。大赛自 4 月 25 日启动以来&#xff0c;吸引了超过 1000 支队伍报名参赛…

6.3 守护进程

目录 守护进程 守护进程特点 守护进程-相关概念 守护进程创建&#xff08;一&#xff09; 守护进程创建&#xff08;二&#xff09; 守护进程创建&#xff08;三&#xff09; 守护进程创建&#xff08;四&#xff09; 守护进程创建&#xff08;五&#xff09; 守护进程…

MS913,MS914,25-100MHz 10/12 位用于平面显示器链路Ⅲ的具有直流平衡编码和双向控制通道的串化器和解串器

MS913/MS914 芯片组是 25MHz~100MHz 10 位/12 位 FPD&#xff0c;Link III SER/DES(串化器/解串器)&#xff0c;它提供高速 FPD-Link III 接口和高速正向通路以及用于差分对上数据发送的双向 控制通路。广泛应用于车载摄像&#xff0c;医疗设备&#xff0c;管道探测等领域 MS91…

【AUTOSAR】Com通讯栈配置说明(四)---- Nm模块

Nm模块 NmGlobalConfig NmGlobalConstants NmRxIndicationCallback: callback 函数 NmCycletimeMainFunction:Nm 主函数调用周期 NmDevErrorDetect: 是否支持DET NmVersionInfoApi: 是否支持获取版本信息api PduR模块 PduRBswModules PduRBswModuleRef&#xff1a;关联的BS…

Spring 初识

1、framework&#xff08;框架&#xff09; 框架就是一些类和接口的集合&#xff0c;通过这些类和接口协调来完成一系列的程序实现&#xff0c;JAVA框架可以分为三层&#xff1a;表下层、业务层和物理层。框架又叫做开发中的半成品&#xff0c;他不能提供整个web应用程序的所有…

赋能中国信创·破局万亿市场|GBASE创新实践助力信创产业发展

5月24日&#xff0c;2023年&#xff08;第二届&#xff09;中国信创产业大会在广州隆重举行&#xff0c;大会以“赋能中国信创破局万亿市场”为主题&#xff0c;聚焦信创国产化基础硬件设施、基础软件、信息安全、应用软件等领域新动态、新成果和新经验。GBASE南大通用受邀出席…

2023年上半年网络工程师下午真题及答案解析

试题一(20分) 某企业办公楼网络拓扑如图1-1所示。该网络中交换机Switch1-Switch4均是二层设备&#xff0c;分布在办公楼的各层&#xff0c;上联采用千兆光纤。核心交换机、防火墙、服务器部署在数据机房&#xff0c;其中核心交换机实现冗余配置。 问题1(4分) 该企业办公网络采…

c语言编程练习题:7-85 温度转换

#include <stdio.h> int main(){int fahr 150;double celsius 5.0*(fahr-32)/9;printf("fahr 150, celsius %d",(int)celsius);return 0;}代码来自&#xff1a;https://yunjinqi.top/article/210

哈佛大学肯尼迪学院博士后怎么样?含金量高吗?

哈佛大学肯尼迪学院博士后含金量很高&#xff0c;毋需置疑&#xff01; 哈佛大学是美国历史最悠久的高等院校:成立于1636年&#xff0c;最早由马萨诸塞州殖民地立法机关创办&#xff0c;最初被称为“新市民学院”。学校于1639年3月更名为“哈佛学院”&#xff0c;以纪念在成立初…

基于深度学习的高精度交警检测识别系统(PyTorch+Pyside6+YOLOv5模型)

摘要&#xff1a;基于深度学习的高精度交警检测识别系统可用于日常生活中检测与定位交警目标&#xff0c;利用深度学习算法可实现图片、视频、摄像头等方式的交警目标检测识别&#xff0c;另外支持结果可视化与图片或视频检测结果的导出。本系统采用YOLOv5目标检测模型训练数据…

【配电网重构】基于混合整数二阶锥配电网重构研究(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

Web的基本漏洞--XSS漏洞

目录 一、XSS漏洞介绍 1.XSS漏洞原理 2.XSS漏洞的类型 反射型 存储型 DOM型 三者区别 3.漏洞识别 4.攻击方式 5.XSS漏洞危害 6.漏洞防御 二、XSS漏洞的攻击方式--注入脚本代码 1.反射型 2.存储型 3.DOM型 4.XSS盲打 5.XSS漏洞的绕过技术 双写绕过 编码绕过 …

【ARIMA-WOA-LSTM】差分自回归移动平均方法-鲸鱼优化算法-LSTM预测研究(python代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

Spring Security的账号密码登录+Azure AD的授权登录集成Demo

一、项目准备&#xff1a; 1.创建一个Springboot项目。 2.注册一个微软的Azure AD服务&#xff0c;并且注册应用&#xff0c;创建用户。 springboot项目pom文件如下&#xff1a; <?xml version"1.0" encoding"UTF-8"?> <project xmlns"…

广播风暴的成因以及如何判断、解决

广播风暴&#xff08;broadcast storm&#xff09;简单的讲是指当广播数据充斥网络无法处理&#xff0c;并占用大量网络带宽&#xff0c;导致正常业务不能运行&#xff0c;甚至彻底瘫痪&#xff0c;这就发生了“广播风暴”。一个数据帧或包被传输到本地网段 &#xff08;由广播…

ObjectARX如何判断点和多段线的关系

目录 1 基本思路2 相关知识点2.1 ECS坐标系概述2.2 其他点坐标转换接口2.3 如何获取多段线的顶点ECS坐标 3 实现例程3.1 接口实现3.2 测试代码 4 实现效果 在CAD的二次开发中&#xff0c;点和多段线的关系是一个非常重要且常见的问题&#xff0c;本文实现例程以张帆所著《Objec…

Vue事件大小写驼峰命名导致无法执行问题解决

文章目录 问题解决方案问题大致原因 问题 驼峰命名事件名不会正常执行 <!DOCTYPE html> <html lang""> <head><title>Vue Emit Example</title><script src"../js/vue.js"></script> </head> <body…