日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

sql ROW_NUMBER() 排序函数

發布時間:2024/4/17 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 sql ROW_NUMBER() 排序函数 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

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?)
5?
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子句

與50位技術專家面對面20年技術見證,附贈技術全景圖

總結

以上是生活随笔為你收集整理的sql ROW_NUMBER() 排序函数的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。