sql ROW_NUMBER() 排序函数

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

View Code

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

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

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

代码如下:

View Code

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

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

如图:

代码如下:

View Code

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

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

代码如下:

View Code

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 )

6 select MAX(rows) as '下单次数',customerID from tabs group by customerID

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

如图:

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

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

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

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

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

代码如下:

View Code

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            )

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

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

代码如下:

View Code

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   
7 select * from OP_Order

6.rows_number()可用于分页

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

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

如下代码:

View Code

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()

: over子句

sql ROW_NUMBER() 排序函数相关推荐

  1. mysql的组内排序生成序号_sql 分组查询,组内排序, 组内添加序号 (SQL Server 排序函数 ROW_NUMBER和RANK 用法总结)...

    下面的例子和SQL语句均在SQL Server 2008环境下运行通过,使用SQL Server自带的AdventureWorks数据库. -- 添加序列号 -- 行号用法: ROW_NUMBER() ...

  2. oracle sql时间排序函数,sql的rank函数

    SQL SERVER 2008排序函数(窗口函数) 排序函数可以用来协助给结果集增加位置信息.SQL SERVER 2008只有四个排序函数,介绍如下: ROW_NUMBER:返回结果集中给定行的序号 ...

  3. SQL Server 排序函数 ROW_NUMBER和RANK 用法总结

    下面的例子和SQL语句均在SQL Server 2008环境下运行通过,使用SQL Server自带的AdventureWorks数据库. 转载请注明此文原创自 CSDN TJVictor的专栏:ht ...

  4. SQL ROW_NUMBER() OVER函数的基本用法用法

    语法:ROW_NUMBER() OVER(PARTITION BY COLUMN ORDER BY COLUMN) 简单的说row_number()从1开始,为每一条分组记录返回一个数字,这里的ROW ...

  5. hive中:row_number()排序函数的使用

    https://blog.csdn.net/javajxz008/article/details/53493509 第一步: select *,row_number() over(distribute ...

  6. mysql排序两位数_MySQL_Mysql row number()排序函数的用法和注意,虽然使用不多,但是也有情况 - phpStudy...

    Mysql row number()排序函数的用法和注意 虽然使用不多,但是也有情况是需要在mysql 里面写语句开发功能的.在sql server 使用惯了,习惯了使用row_number() 函数 ...

  7. SQL中常用的窗口函数(排序函数)-row_number/rank/dense_rank/ntile

    总结四个函数的特点: row_number():连续不重复:1234567 rank() :重复不连续:1222567 dense_rank():重复且连续:1222345 ntile():平均分组: ...

  8. SQL中的排序函数【row_number() 、rank() 、dense_rank() 】

    一.SQL中有三种排序函数 1.row_number() over(order by 列名) 2.rank() over(order by 列名) 3.dense_rank() over(order ...

  9. SQL 中 Rank、row_number、dense_rank 三种排序函数的区别

    现有一张工资表,需要对其进行排名,工资相同的人并列排名,然后再排名,很多刚接触的小伙伴估计第一时间想到Rank()函数或row_number() 函数,但是结果出来后并不是自己想要的,在这里就给大家介 ...

最新文章

  1. 激光雷达与相机:哪个最适合自动驾驶汽车?
  2. 又一次内存分配失败(关于overcommit_memory)
  3. MVC在基控制器中实现处理Session的逻辑
  4. 具有jOOQ和Java 8的CompletableFuture的异步SQL执行
  5. 学习vue.js的自我梳理笔记
  6. LeetCode 198, 213 House Robber
  7. 搭建10分钟,解决90%问题,帕累托分析模型为何这么强?
  8. linux环境 前端开发环境搭建,Linux运维知识之linux 前端环境搭建
  9. 第95天:CSS3 边框、背景和文字效果
  10. 「手把手带你学算法」本周小结!(贪心算法系列三)
  11. atitit 体系搭建的方法 解决方案 attilax总结.docx
  12. Java并发编程实战读书笔记合集
  13. WIN11右键菜单默认展开
  14. 以不变应万变的客服代表,让服务体验持续提升
  15. 完美解决 iOS 中只旋转自己想要旋转的屏幕
  16. stm32 BKP寄存器操作[操作寄存器+库函数]
  17. WPF 设置属性“System.Windows.FrameworkElement.Style”时引发了异常
  18. 孙陶然:定战略时切忌好高骛远
  19. 网络视频录像机地址无法修改如何解决
  20. 微信数据包解析 php,微信交互数据包分析 - 新手入门及其它(软件) - 恩山无线论坛 - Powered by Discuz!...

热门文章

  1. LTS计算机,Pine64单板计算机(SBC)和模块入门
  2. [转]在VS中为C/C++源代码文件生成对应的汇编代码文件(.asm)
  3. mongodb 搜索速度_初识 MongoDB 数据库
  4. c++内存管理-VC6
  5. 15.4.3 用于Generator的泛型方法
  6. java动态定义泛型_关于oop:具有动态性质且可完全自定义的Java泛型编程
  7. Java线程之守护线程(Daemon)
  8. java弱引用(WeakReference)和SoftReference的区别以及在android内存处理的作用
  9. HTML中行内元素与块级元素的区别
  10. VC++取MD5算法记录下以后用得到(转)