`
hw361062491
  • 浏览: 9338 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

SQL Server数据库ROW_NUMBER()函数使用详解

    博客分类:
  • SQL
阅读更多

转载 http://database.51cto.com/art/201108/283399.htm

SQL Server数据库ROW_NUMBER()函数的使用是本文我们要介绍的内容,接下来我们就通过几个实例来一一介绍ROW_NUMBER()函数的使用。

实例如下:

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

如图:

SQL Server数据库ROW_NUMBER()使用详解

代码如下:

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

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

SQL Server数据库ROW_NUMBER()使用详解

代码如下:

  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.统计每一个客户所有的订单中购买的金额最小,而且并统计改订单中,客户是第几次购买的。

如图:

SQL Server数据库ROW_NUMBER()使用详解

上图: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.筛选出客户第一次下的订单。 

SQL Server数据库ROW_NUMBER()使用详解

思路。利用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子句,执行完后,再给每一条记录进行编号。

关于SQL Server数据库ROW_NUMBER()函数的使用就介绍到这里了,希望本次的介绍能够对您有所帮助。

分享到:
评论

相关推荐

    SQLServer中Partition By及row_number 函数使用详解

    在SQL Server中,`PARTITION BY` 和 `ROW_NUMBER()` 是两种非常重要的分析函数,它们在处理大数据集时尤其有用。本文将详细讲解这两个函数的使用方法及其在实际场景中的应用。 `PARTITION BY` 关键字是分析函数的一...

    SQL Server中row_number函数的常见用法示例详解

    一.SQL Server Row_number函数简介 ROW_NUMBER()是一个Window函数,它为结果集的分区中的每一行分配一个连续的整数。 行号以每个分区中第一行的行号开头。 以下是ROW_NUMBER()函数的语法实例: select *,row_...

    oracle rownum 的使用 和sqlserver有区别的!

    - 在 SQL Server 中,ROW_NUMBER() 函数与 Oracle 中的 ROWNUM 功能类似,但它们之间存在一些关键差异。 - **ROW_NUMBER()** 可以基于特定的排序规则为每行分配一个连续的数字,这使得它在处理有序数据时更为灵活...

    分页存储过程,仅适用于Sql2005以上,使用 ROW_NUMBER()函数用于多表分页查询,可以分组查询

    SQL Server 2005 及其后续版本引入了 `ROW_NUMBER()` 函数,使得实现分页功能变得更加简单高效。本文将详细介绍一个基于 SQL Server 2005 的分页存储过程,该存储过程不仅支持多表分页查询,还能进行分组查询。 ###...

    oracle row_number用法

    ### Oracle Row_Number 函数详解 #### 一、Row_Number 基础概念 在Oracle数据库中,`ROW_NUMBER()`函数是一种窗口函数,主要用于为查询结果中的每一行分配一个唯一的序列号。这一特性使得它在处理分组数据时非常...

    row_number

    ### row_number() 函数详解及应用 #### 一、row_number()函数介绍 `row_number()` 是 SQL 中的一个窗口函数,常用于为查询结果中的每一行分配一个唯一且连续的整数编号。这个函数通常与 `OVER()` 子句一起使用来...

    SQL Server中row_number分页查询的用法详解

    在查询时应用了一个排序标准后,只有通过编号才能够保证其顺序是一致的,当使用ROW_NUMBER函数时,也需要专门一列用于预先排序以便于进行编号。 ROW_NUMBER() 说明:返回结果集分区内行的序列号,每个分区的第一行从...

    SQL中row-number函数用法

    ### SQL中row_number函数详解与应用 #### 一、row_number函数概述 `row_number()` 是SQL中的一个重要窗口函数,用于为每一行分配一个唯一且连续的整数。这一功能在处理复杂的数据排序和筛选场景时非常有用。下面将...

    SQl分页查询详解.pdf

    在SQL Server 2000中,由于缺乏ROW_NUMBER()函数,实现分页查询通常比较复杂,常用的方法包括使用子查询、临时表或自连接等,但这些方法往往效率较低且限制较多。 6. **ROW_NUMBER()的优势**: - 灵活性:ROW_...

    SQL为查询的结果加上序号(ROW_NUMBER) 合并多个查询结果

    ### SQL中的ROW_NUMBER()函数详解及应用场景 在数据库查询中,有时我们需要对查询结果进行排序并为每一项结果分配一个唯一的序号。这种需求在多种场景下都非常常见,比如分页查询、排名显示等。本文将详细介绍如何...

    SQLServer数据库分页查询

    ### SQL Server 数据库分页查询方法详解 #### 一、背景与问题定义 在实际的数据库操作中,分页查询是非常常见的需求之一。对于大型数据集来说,一次加载所有数据到前端显示是不现实的,这不仅会增加服务器负担,还...

    SQL Server 2005 提供了4个行号排序函数

    ### SQL Server 2005 行号排序函数详解 #### 一、引言 在数据库操作中,经常需要对查询结果进行排序处理,尤其是在实现数据分页时。SQL Server 2005 引入了一系列窗口函数,其中行号排序函数在数据排序和分页方面...

    SQL分页查询带详细分析的

    #### 三、ROW_NUMBER() 函数详解 `ROW_NUMBER()` 函数是在SQL Server 2005中引入的一个新特性,它可以为结果集中的每一行分配一个唯一的行号。 **语法**: ```sql ROW_NUMBER() OVER (ORDER BY column_name(s)) ``...

    数据库基本概念 ,常用数据库,sql server数据库,Access数据库,sql语句,数据库连接,数据库分页显示

    - **分页原理**:通过限制查询结果集的数量来实现,通常结合 LIMIT 和 OFFSET 关键字(SQL Server 中为 TOP 和 ROW_NUMBER 函数)。 - 示例: ```sql SELECT * FROM ( SELECT *, ROW_NUMBER() OVER (ORDER BY id...

    数据库分页大全,oracle,sqlserver,mysql

    从SQL Server 2005开始,可以使用`ROW_NUMBER()`函数配合`OVER`子句来进行更高效的分页查询: ```sql SELECT xx.* FROM ( SELECT t.*, ROW_NUMBER() OVER (ORDER BY o_id) AS num FROM t_order t ) xx WHERE num ...

    SQLServer数据库设计和高级查询10

    ### SQL Server 数据库设计与高级查询详解 #### 一、SQL Server 数据库设计基础 **1.1 数据库设计概述** 数据库设计是构建一个高效、可靠且易于维护的数据存储系统的关键步骤。良好的数据库设计能够确保数据的...

    oracle分析函数

    ### Oracle分析函数详解:row_number() over 在Oracle数据库中,分析函数(Analytic Functions)是一种强大而灵活的数据处理工具,它们能够在查询结果集中对每一行数据进行计算,而不像传统的聚合函数那样只返回...

    jsp+sql server分页技术

    SQL Server提供了多种分页查询的方法,例如使用`TOP`和`ORDER BY`,或者`ROW_NUMBER()`窗口函数。这里我们主要介绍使用`ROW_NUMBER()`的方式,因为它更灵活且性能优秀。 ```sql WITH PagedData AS ( SELECT *, ROW...

    分页查询sql

    #### 三、ROW_NUMBER()函数详解 `ROW_NUMBER()`函数是SQL Server提供的一个窗口函数,用于为结果集中的每一行分配一个唯一的数字。它可以与`OVER()`子句一起使用,以定义分配行号的方式。 - **基本语法**: ```...

Global site tag (gtag.js) - Google Analytics