日期:2012-06-27 04:58:00 来源:本站整理
ROW_NUMBER SQL Server 2005的LIMIT功效实现(ROW_NUMBER()排序函数)[MSSQL防范]
本文“ROW_NUMBER SQL Server 2005的LIMIT功效实现(ROW_NUMBER()排序函数)[MSSQL防范]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
语法:
ROW_NUMBER() OVER([ <partition_by_clause>] <order_by_clause>)
备注:
ORDER BY子句可肯定在特定分区中为行分配唯一ROW_NUMBER的次序.
参数:
<partition_by_clause> 将FROM子句生成的后果集划入利用了ROW_NUMBER函数的分区.
<order_by_clause> 肯定将ROW_NUMBER值分配给分区中的行的次序.有关具体信息,请参阅ORDER BY子句(Transact-SQL).
返回范例:
bigint
近似于MySQL的LIMIT功效语法实例:
复制代码 代码以下:
SELECT * FROM (SELECT ROW_NUMBER() OVER(ORDER BY id ASC) AS rownum, * FROM MyTable) AS items WHERE items.rownum BETWEEN 20 AND 30;
sql 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.统计出每一个各户的全部订单并按每一个客户下的订单的金额 升序排序,同时给每一个客户的订单举行编号.这样就知道每个客户下几单了.
代码以下:
复制代码 代码以下: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.统计每一个客户全部的订单中购置的金额最小,并且并统计改订单中,客户是第几次购置的.
如图:
上图:rows表示客户是第几次购置.
思绪:操纵暂时表来履行这一操作
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
)
5.挑选出客户第一次下的订单.
思绪.操纵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
6.rows_number()可用于分页
思绪:先把全部的产品挑选出来,然后对这些产品举行编号.然后在where子句中举行过滤.
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'
以上代码是先履行where子句,履行完后,再给每一条记录举行编号.
以上是“ROW_NUMBER SQL Server 2005的LIMIT功效实现(ROW_NUMBER()排序函数)[MSSQL防范]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |
评论内容只代表网友观点,与本站立场无关!
评论摘要(共 0 条,得分 0 分,平均 0 分)
查看完整评论