实例如下:

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.统计每一个客户最近下的订单是第几次下的订单。

代码如下:

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

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

如图:

上图:rows表示客户是第几次购买。

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

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

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

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

代码如下:

 
  1. with tabs as
  2. (
  3. select ROW_NUMBER() over(partition by customerID  order by insDT) as rows,customerID,totalPrice, DID from OP_Order
  4. )
  5. select * from tabs
  6. where totalPrice in
  7. (
  8. select MIN(totalPrice)from tabs group by customerID
  9. )

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

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

代码如下:

 
  1. with tabs as
  2. (
  3. select ROW_NUMBER() over(partition by customerID  order by insDT) as rows,* from OP_Order
  4. )
  5. select * from tabs where rows = 1
  6. select * from OP_Order

7.rows_number()可用于分页

思路:先把所有的产品筛选出来,然后对这些产品进行编号。然后在where子句中进行过滤。

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

如下代码:

 
  1. select
  2. ROW_NUMBER() over(partition by customerID  order by insDT) as rows,
  3. customerID,totalPrice, DID
  4. from OP_Order where insDT>'2011-07-22'

以上代码是先执行where子句,执行完后,再给每一条记录进行编号。

ROW_NUMBER()函数使用详解相关推荐

  1. SQL Server数据库partition by 与ROW_NUMBER()函数使用详解[转]

    关于SQL的partition by 字段的一些用法心得 先看例子: if object_id('TESTDB') is not null drop table TESTDB create table ...

  2. Hive中row_number()函数用法详解及示例

    目录 一.Hive 中row_number()函数介绍 二.使用示例 三.总结 四.附录 在Oracle中,我们经常会用到row_number() over(partition by clo1 ord ...

  3. ROW_NUMBER() OVER()函数用法详解 (分组排序 例子多)

    ROW_NUMBER() OVER()函数用法详解 (分组排序 例子多) https://blog.csdn.net/qq_25221835/article/details/82762416 post ...

  4. ROW_NUMBER() OVER()函数用法详解

    今天同事问了一个关于插入表的问题,对象:被插入表sys_equi_disorg   A  , 查询表sys_equi_dict   B 因为A表的ID不是自增的,并且不能更改表结构,主键默认值还是0, ...

  5. R语言tidyr包gather()函数实战详解:数据收缩、从宽表到窄表

    R语言tidyr包gather()函数实战详解:数据收缩.从宽表到窄表 目录 R语言tidyr包gather()函数实战详解:数据收缩.从宽表到窄表 收缩两列数据

  6. R语言tidyr包spread()函数实战详解:数据裂变、从窄表到宽表

    R语言tidyr包spread()函数实战详解:数据裂变.从窄表到宽表 目录 R语言tidyr包spread()函数实战详解:数据裂变.从窄表到宽表

  7. R语言tidyr包Unite()函数实战详解:多个数据列合并为一列

    R语言tidyr包Unite()函数实战详解:多个数据列合并为一列 目录 R语言tidyr包Unite()函数实战详解:多个数据列合并为一列

  8. R语言tidyr包separate()函数实战详解:一列裂变为多列

    R语言tidyr包separate()函数实战详解:一列裂变为多列 目录 R语言tidyr包separate()函数实战详解:一列裂变为多列 一列裂变为两列

  9. C++中substr()函数用法详解

    C++中substr()函数用法详解 原型: string substr (size_t pos = 0, size_t len = npos) const; 返回一个新构造的string对象,其值初 ...

最新文章

  1. 条件随机场(CRF) - 2 - 定义和形式
  2. 第九章 9.2 数组的方法(Array Methods)
  3. LeetCode: 102. Binary Tree Level Order Traversal
  4. boost::hana::test::TestGroup用法的测试程序
  5. 动态规划--凸多边形最优三角剖分
  6. lamp mysql5.5 LAMP平台全新编译安装
  7. 大数据组件的各种协议与作用(持续更新中)
  8. Windows Communication Foundation环境安装篇
  9. [Redux/Mobx] 为什么redux能做到局部渲染呢?
  10. 微信小程序 WXBizDataCrypt 解密 报错
  11. android java函数_java – 在android中创建全局函数
  12. Linux操纵零碎下设置JSP开发环境的方式
  13. SpringBoot中.properties文件中配置项显示到页面中文乱码解决
  14. XcodeGhost简单查看
  15. GDI+ 绘制曲线方法总结
  16. 0723数组复习 堆区 动态数组
  17. 图像滤镜艺术---ZPhotoEngine超级算法库
  18. 按键精灵通过句柄获取窗口坐标_按键精灵怎么获取同名窗口的句柄
  19. [PHP] PHP7.4.2安全和修复版本的更改日志
  20. 一文带你清晰弄明白线程池的原理

热门文章

  1. 2019java面试3年_Java回顾#3 – 2019年对于社区而言最重要的事情
  2. 人家好害羞啦主题主题下载
  3. MATLAB | 全网唯一! 又双叒叕一种弦图绘制
  4. 计算机工程科学怎么翻译,汉英机器翻译中汉语篇章时间信息系统模型 - 计算机工程与科学.pdf...
  5. Linux效劳器装机安全快速进阶指南(6)
  6. 人商城PHP7.0,wemall商城系统v7.0|php微信商城系统wemall v7.0下载
  7. docker启动mysql闪退问题
  8. [网络工程师]-防火墙-防火墙体系
  9. css中min-height和max-height的区别
  10. Ceph RBD API librdb 读流程源码分析