sql over()函数使用

news/2025/9/24 10:07:38/文章来源:https://www.cnblogs.com/throughFog/p/19108651

起因

最近我在推送数据到中间库时,由于源表比较大,所以采用了基于主键ID的分批推送,于是就有了如下脚本:

-- 第一步,推送数据
insert into Interconnect..Steps
SELECT TOP (@batch_size) StepID, {其他业务字段}
FROM Steps
WHERE StepID > @last_id
ORDER BY StepID-- 第二步,查询并赋值最新的last_id
SELECT @last_id = MAX(StepID) FROM (SELECT TOP (@batch_size) StepIDFROM StepsWHERE StepID > @last_idORDER BY StepID
) t;

但这存在一个效能问题,我需要查询两次Steps表,才能完成推送与更新last_id的需求。那么有没有办法一次查询就把两件事给办了?

over()窗口函数

核心作用:在保持原始行不变的前提下,为每一行添加基于某个数据范围的聚合或分析结果。

对于上面这种情况,我可以在查询中添加一列max(StepID) over() as Last_ID,就可以基于整个结果集计算出最大的StepID。
不过对于这个例子,因为窗口函数是基于全表数据进行聚合的,所以真正使用时还需要嵌套子表,以保证是基于当前@batch_size结果集得出的last_id

SELECT StepID, {业务字段},MAX(StepID) OVER() AS LAST_ID
FROM (SELECT TOP (@batch_size) StepID, {业务字段}FROM StepsWHERE StepID > @last_idORDER BY StepID
) AS subquery;

如果over()参数不为空,则会呈现如下差异:

-- 按 processID 分组的最大值(每行显示所属process的最大stepID)
MAX(stepID) OVER(PARTITION BY processID)

总结

over()函数的特点:

  1. 保持数据粒度 - 不改变原始行数
  2. 提供上下文 - 每行数据都了解整体情况
  3. 提升性能 - 比子查询更高效
  4. 增强分析能力 - 支持复杂的数据分析场景

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

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

相关文章

小柏实战学习Liunx(图文教程三十二)

小柏实战学习Liunx(图文教程三十二)本节课主题:linux(CentOS Stream 9 64bit)安装Docker,LangBot,NapCatQQ 前言:一定要知道每一个命令是啥意思,并且要学会看报错信息,学会使用AI。 (centos7 注定要被淘汰了,公司已经…

绵竹网站制作狗和女主人做爰网站

在Docker中搭建Redis主从架构非常方便,下面是一个示例,演示一下如何使用Docker Compose搭建一个Redis主从复制环境。首先,确保我们本地环境已经安装了Docker和Docker Compose。 我这里使用OrbStack替代了Docker desktop。 1. 创建一个名为r…

Git回退版本 reset、revert、read-tree、restore

一、git reset git reset [--soft | --mixed | --hard] [目标版本][目标版本]:使用git log获取目标版本的SHA 使用git reflog获取目标版本的短SHA HEAD: 当前版本 HEAD^:上一个版本 HEAD^^:上上一个版本 HEAD~数字…

详细介绍:LeetCode 240. 搜索二维矩阵 II

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

Avalonia 背景颜色Transparent在用户界面设计中对悬浮效果影响的总结

Transparent 对悬浮效果的影响 在用户界面设计中,透明(Transparent)属性常用于控制组件如何处理鼠标事件及视觉呈现。特别是在Avalonia UI框架中,设置控件的背景色为透明对实现交互效果如悬停反馈有重要影响。 1. …

飞书 燕千云焕新上线,飞书用户即刻试用ITSM工具

飞书x燕千云ITSM,让IT服务再焕新当飞书的协作流畅性,与燕千云智能服务流平台的专业IT服务能力相遇,飞书用户在无需改变使用习惯的情况下,也能获得更智能、更高效、更简便的企业IT服务新体验。深度集成飞书生态,即…

如果使用微软 Azure 托管的 OpenAI 服务

使用微软 Azure 托管的 OpenAI 服务时,LangChain4j 提供了专门的集成支持,通过 langchain4j-azure-openai 模块可以轻松实现交互。以下是详细的使用指南: 1. 准备工作创建 Azure OpenAI 资源:在 Azure 门户 中创建…

西樵网站建设公司电脑做apk的网站h5

Windows Server 2012姗姗来迟,最新的Hyper-V 3给我们带来更多的惊喜,后续三篇博文和大家共同学习虚拟机CPU竞争机制。 第一部分:分配给虚拟机的CPU资源 第二部分:限定虚拟机可用的CPU利用率 第三部分:争夺CPU资源优先级…

Alibaba Cloud Linux与 RHEL/CentOS版本对应关系 - 实践

Alibaba Cloud Linux与 RHEL/CentOS版本对应关系 - 实践2025-09-24 09:52 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; …

免费表格模板网站建设视频网站的视频源

ArrayList 基于数组实现,无容量的限制。 在执行插入元素时可能要扩容,在删除元素时并不会减小数组的容量,在查找元素时要遍历数组,对于非null的元素采取equals的方式寻找。 是非线程安全的。 注意点: &#xff08…

象山县城乡建设局网站网站主页图片怎么换

🔆 文章首发于我的个人博客:欢迎大佬们来逛逛 数学建模:多目标优化算法 多目标优化 分别求权重方法 算法流程: 两个目标权重求和,化为单目标函数,然后求解最优值 min ⁡ x ∑ i 1 m w i F i ( x ) s.…

OpenCV:人脸识别实战,3 种算法(LBPH/EigenFaces/FisherFaces)代码详解 - 实践

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

深入解析:Playwright录制时的高亮实现机制分析

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

什么是文件外发审批?主要有哪几种关键流程?

文件外发审批是企业进行外部文档传输时不可或缺的一部分。它涵盖了从申请发起到文档送达后反馈的一系列环节。在申请阶段,员工需要利用Ftrans B2B企业间文件安全交换系统,准确填写申请信息以确保透明度和合规性。随后…

VPX处理板设计原理图:9-基于DSP TMS320C6678+FPGA XC7V690T的6U VPX信号处理卡 C6678板卡, XC7VX690T板卡, VPX处理板

基于DSP TMS320C6678+FPGA XC7V690T的6U VPX信号处理卡 一、概述本板卡基于标准6U VPX 架构,为通用高性能信号处理平台,系我公司自主研发。板卡采用一片TI DSP TMS320C6678和一片Xilinx公司Virtex 7系列的FPGA XC7V6…

Python入门—Mac如何搭建Python开发环境?

Python入门—Mac如何搭建Python开发环境?Python入门—Mac如何搭建Python开发环境?编程玉子 ​关注她14 人赞同了该文章随着Numpy、Scipy、Matplotlib和Pandas等众多程序库的开发,python在数据分析、数据挖掘、海量数…

织梦做网站简单吗高端网站建设公司排名

1.概述 封装(Encapsulation)是指一种将抽象性函式接口的实现细节部分包装、隐藏起来的方法。 封装可以被认为是一个保护屏障,防止该类的代码和数据被外部类定义的代码随机访问。 要访问该类的代码和数据,必须通过严格的接口控制…

VitePress 添加友链界面

效果预览友链数据存储 友链数据通常是经常需要添加和修改的,所以我们不能直接写死到页面上。这里我们单独提一个文件去存储友链数据,并且友链数据的格式基本也是类似的。 新建 docs/pages/links.md 文件,内容如下:…

跨网文件摆渡软件:企业数据安全高效传输的关键解决方案!

在数字化时代,企业为保障核心数据安全,普遍采用网络隔离策略,将内网与外网、研发网与办公网等不同网络环境分隔开来。然而,业务协同中跨网文件传输的需求始终存在,跨网文件摆渡软件应运而生。这类软件是专门用于在…

洛谷题单指南-进阶数论-P1495 【模板】中国剩余定理(CRT)/ 曹冲养猪

原题链接:https://www.luogu.com.cn/problem/P1495 题意解读:求方程组x ≡ bi (mod ai), i∈[1,n]的最小正整数解,所有的ai互质。 解题思路: 1、中国剩余定理 设方程组为(a1,a2,a3互质):x ≡ b1 (mod a1) x ≡…