国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

Mysql|Sql Server|Oracle|Redis|MongoDB|PostgreSQL|Sqlite|DB2|mariadb|Access|數據庫技術|

服務器之家 - 數據庫 - Sql Server - SQL Server中row_number分頁查詢的用法詳解

SQL Server中row_number分頁查詢的用法詳解

2020-07-22 17:13無恨星晨 Sql Server

這篇文章主要介紹了SQL Server中row_number的用法詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

ROW_NUMBER()函數將針對SELECT語句返回的每一行,從1開始編號,賦予其連續的編號。在查詢時應用了一個排序標準后,只有通過編號才能夠保證其順序是一致的,當使用ROW_NUMBER函數時,也需要專門一列用于預先排序以便于進行編號。

ROW_NUMBER()

說明:返回結果集分區內行的序列號,每個分區的第一行從1開始。
語法:ROW_NUMBER () OVER ([ <partition_by_clause> ] <order_by_clause>) 。
備注:ORDER BY 子句可確定在特定分區中為行分配唯一 ROW_NUMBER 的順序。
參數:<partition_by_clause> :將 FROM 子句生成的結果集劃入應用了 ROW_NUMBER 函數的分區。
<order_by_clause>:確定將 ROW_NUMBER 值分配給分區中的行的順序。
返回類型:bigint 。

ROW_NUMBER()常用的幾種情況

1.使用row_number()函數進行編號,如

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

原理:先按psd進行排序,排序完后,給每條數據進行編號。

2.在訂單中按價格的升序進行排序,并給每條記錄進行排序代碼如下:

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

3.統計出每一個各戶的所有訂單并按每一個客戶下的訂單的金額 升序排序,同時給每一個客戶的訂單進行編號。這樣就知道每個客戶下幾單了。

如圖:

代碼如下:

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

4.統計每一個客戶最近下的訂單是第幾次下的訂單。

代碼如下:

?
1
2
3
4
5
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.根據查找出每一個客戶的最小價格來查找相應的記錄。

代碼如下:

?
1
2
3
4
5
6
7
8
9
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來查詢客戶第一次下的訂單記錄。

代碼如下:

?
1
2
3
4
5
6
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.rows_number()可用于分頁

思路:先把所有的產品篩選出來,然后對這些產品進行編號。然后在where子句中進行過濾。

實例

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
--分頁存儲過程
 
create proc usp_GetMyPhotos
 @pageIndex int, --當前頁碼
 @pageSize int, --每頁多少條
 @pageCount int output --計算 總共多少頁
as
 declare @count int --總共多少條
 select @count =COUNT(*) from Photos
 set @pageCount = CEILING( @count*1.0/@pageSize)
 select * from
(select *,ROW_NUMBER() over(order by pid desc) as num
from Photos) as t
where num between @pageSize*(@pageIndex-1) + 1 and @pageSize*@pageIndex

8.在使用over等函數時,over里頭的分組及排序的執行晚于“where,group by,order by”的執行。

代碼:

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

以上代碼是先執行where子句,執行完后,再給每一條記錄進行編號。

到此這篇關于SQL Server中row_number的用法詳解的文章就介紹到這了,更多相關SQL Server中row_number內容請搜索服務器之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持服務器之家!

原文鏈接:https://www.cnblogs.com/weixing/p/5460697.html

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 欧美一区 | 另类一区| 91网在线观看 | 精品国产精品三级精品av网址 | 黄色美女视频网站 | 精品久久久久久久久久久久久久 | 久久99精品久久久久久国产越南 | 国产精品久久久久久久久久久天堂 | 亚洲免费久久久 | 中文字幕 亚洲一区 | 三级黄色视频毛片 | 亚洲久久久久 | 91免费版在线观看 | 日韩在线视频免费观看 | 艹逼逼视频| 在线观看成人av | 伦一区二区三区中文字幕v亚洲 | 欧美在线亚洲 | 国产精品视频免费看 | 天堂网av在线| 91视频导航 | 亚洲区视频在线观看 | 国产精品18久久久久vr手机版特色 | 97久久精品人人澡人人爽 | 亚洲精品第一 | 欧美成人久久 | 日韩中文在线视频 | 久久亚洲一区二区三区明星换脸 | 欧美精品国产精品 | 日韩欧美二区 | 久久精品国产v日韩v亚洲 | 亚洲欧美激情精品一区二区 | 日韩不卡二区 | 国产日产欧产美韩av | 深夜视频在线观看 | 91视频专区 | 97精品国产 | 日韩在线中文 | 最新国产一区 | 久re在线 | 欧美日韩网站 |