SQL 中 ROW_NUMBER() OVER() 函数用法详解

2023-05-16

语法格式:row_number() over(partition by 分组列 order by 排序列 desc)

row_number() over()函数中,over()里的分组以及排序的执行晚于 where 、group by、 order by 的执行。

1.使用row_number()函数进行编号,如

select email,customerID, ROW_NUMBER() over(order by psd) as rows from QT_Customer

原理:先按psd进行排序,排序完后,给每条数据进行编号。

2.在订单中按价格的升序进行排序,并给每条记录进行排序代码如下:

select DID,customerID,totalPrice,ROW_NUMBER() over(order by totalPrice) as rows from OP_Order

3.统计出每一个各户的所有订单并按每一个客户下的订单的金额 升序排序,同时给每一个客户的订单进行编号。这样就知道每个客户下几单了:

select ROW_NUMBER() over(partition by customerID  order by totalPrice)
 as rows,customerID,totalPrice, DID from OP_Order

4.统计每一个客户最近下的订单是第几次下的订单:

with tabs as  
(  
select ROW_NUMBER() over(partition by customerID  order by totalPrice)
 as rows,customerID,totalPrice, DID from OP_Order  
 )  
select MAX(rows) as '下单次数',customerID from tabs 
group by customerID 

5.统计每一个客户所有的订单中购买的金额最小,而且并统计改订单中,客户是第几次购买的:

思路:利用临时表来执行这一操作。

1.先按客户进行分组,然后按客户的下单的时间进行排序,并进行编号。

2.然后利用子查询查找出每一个客户购买时的最小价格。

3.根据查找出每一个客户的最小价格来查找相应的记录。

    with tabs as  
     (  
    select ROW_NUMBER() over(partition by customerID  order by insDT) 
as rows,customerID,totalPrice, DID from OP_Order  
    )  
     select * from tabs  
    where totalPrice in   
    (  
    select MIN(totalPrice)from tabs group by customerID  
     ) 

6.筛选出客户第一次下的订单。

思路。利用rows=1来查询客户第一次下的订单记录。

    with tabs as  
    (  
    select ROW_NUMBER() over(partition by customerID  order by insDT) as rows,* from OP_Order  
    )  
    select * from tabs where rows = 1 
    select * from OP_Order 

7.注意:在使用over等开窗函数时,over里头的分组及排序的执行晚于“where,group by,order by”的执行。

    select   
    ROW_NUMBER() over(partition by customerID  order by insDT) as rows,  
    customerID,totalPrice, DID  
    from OP_Order where insDT>'2011-07-22' 
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SQL 中 ROW_NUMBER() OVER() 函数用法详解 的相关文章

  • C语言中数的二进制、八进制、十进制以及十六进制表示及输出

    以十进制数163为例 xff1a 二进制的英文是Binary xff0c 简写为B或BIN xff0c 所以163 61 0b10100011 xff08 前面加上 0b 或 0B xff09 八进制的英文是Octal xff0c 简写为O
  • java-字符串数组排序

    问题 43 代码 xff1a 创建一个长度是8的字符串数组 使用8个长度是5的随机字符串初始化这个数组 对这个数组进行排序 xff0c 按照每个字符串的首字母排序 无视大小写 注1 xff1a 不能使用Arrays sort 要自己写 注2
  • python 装饰器

    1 装饰器 装饰器 Decorators 是Python的一个重要部分 简单地说 xff1a 他们是修改其他函数的功能的函数 他们有助于让我们的代码更简短 xff0c 也更Pythonic xff08 Python范儿 xff09 大多数初
  • Java的俩个list之间比较,判断是否一致的方法

    前文 我看了一篇博客 xff0c 是关于判断俩个list的 看完之后我觉得可能并不是很好 结合他的思路 xff0c 我重新整理了一下代码 同时也看了看String中的equals的实现 原文是 xff1a https blog csdn n
  • ARP地址解析过程(同一子网和不同子网)

    人们最熟悉的网络可以说是以太网 xff0c 而且人们都知道 xff0c 每块网卡都有一个编号 xff0c 也就是网卡地址 xff08 称为MAC地址 xff09 xff0c 代表计算机的物理地址 另外 xff0c 网络中的每一台计算机都分配
  • (2)树莓派3B连接隐藏wifi网络

    连接隐藏wifi可以使用nano编辑器打开wpa supplicant配置文件 xff1a sudo nano etc wpa supplicant wpa supplicant conf 在文件底部添加 xff1a network 61
  • 获取本地外网ip的api接口

    开发时偶尔会需要前端传客户端的ip地址 xff0c 以下方法可以获取客户端外网ip 1 新增加载js方法 export const loadScript 61 src 61 gt return new Promise resolve rej
  • Ubuntu 18.04 配置ibus中文拼音输入法

    Ubuntu 18 04系统想安装中文输入法 xff08 利用ibus输入法配置 xff09 只要三步 注意 xff1a 你的Ubuntu需要可以上网 xff01 xff01 xff01 因为要下载一系列安装包 第一步 xff1a 首先需要
  • VMware安装Kali后黑屏 只有左上角光标

    在安装过程中选择安装GRUB引导程序 xff0c 默认是否 xff0c 我们需要选择是
  • vCenter Server目录/storage/core,/storage/log 空间不足问题解决

    概述 xff1a VC是7 0的 xff0c 存储警告 storage core及 storage log目录空间不足 xff1b 且出现VC web管理页面运行缓慢 xff1b 用途概述 storage core xff1a 存储来自vC
  • C#反编译利器--dotPeek

    在开发项目的时候 xff0c 当项目数量变大 xff0c 源代码管理也是一件非常头疼的事 xff0c 如果没有专门的人员来管理代码 xff0c 没有code review机制的话 xff0c 代码很容易乱 xff0c 这就会导致现场的代码与
  • C/C++调用Rust编写的动态库

    目录 C C 43 43 调用Rust编写的动态库一 背景二 解决方案三 测试3 1 正确性检验3 2 内存安全检验 C C 43 43 调用Rust编写的动态库 一 背景 Rust通过大量的编译期检查能够有效避免程序运行时出现的各种内存问
  • 计蒜客习题-班长竞选 最小割 “二选一 方案不同有额外开销”模型

    设源点S xff0c 汇点T 对于所有赞成的人 从S连一条边到他们对应的点上 容量设为1 对于所有反对的人 从他们对应的点上连一条边到T 容量为1 对于所有有朋友 关系的a和b 在他们之间连一条无向边 容量为1 最小割可以用dinic跑出来
  • 百度之星2020 初赛第三场

    Discount Accepts 1432 Submissions 2728 Time Limit 2000 1000 MS Java Others Memory Limit 65536 65536 K Java Others Proble
  • 快速幂取模_C++

    一 题目背景 已知底数a xff0c 指数b和模数mo xff0c 求ans 61 ab mo 二 朴素算法 就是暴力啦 1 void power int a int b int mo 2 long long ans 61 1 3 for
  • python抓取Windows系统内存和CPU占用率

    python抓取Windows系统内存和CPU占用率 主要参考来源 xff1a https www jianshu com p 23c2a518019a 1 源代码 cpuget py from time import sleep strf
  • 汇编语言(十)——条件判断指令

    首先了解按位指令 xff0c 这里使用的技术也可以用于操作硬件设备控制位 xff0c 实现通信协议以及加密数据 xff0c 操作说明AND源操作数和目的操作数进行逻辑与操作OR源操作数和目的操作数进行逻辑或操作XOR源操作数和目的操作数进行
  • [Altium Designer] AD PCB中相同模块的布局布线方法(Room Copy方法)

    最近画的一个板子 xff0c 有12路4 20mA采集电路 xff0c 每一路的元件都是一样的 xff0c 恰好板子空间也够 xff0c 就想着能不能画好一个之后其他的可以 照抄 xff0c 网上查了一圈还真有 xff0c 那就是 Room
  • 【实用教程】VSPD虚拟串口工具——从此告别硬件串口调试

    modbus测试工具链接 xff1a https blog csdn net byxdaz article details 77979114 1 下载VSPD工具 VSPD下载链接 xff0c 点击这里直接下载 2 安装 解压后的安装包是这
  • PageHelper自定义count

    使用场景 web页面的查询功能太复杂 xff0c pageHelper自动生成的count语句相当于在查询语句外包一层count xff0c 查询速度比较慢 需要优化count语句 xff0c 所以才想起来自定义count语句 版本要求 5

随机推荐