ROW_NUMBER() OVER() 函數用法詳解 (分組排序,多例子)

前些天發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊跳轉到教程。

語法格式:row_number() over(partition by 分組列 order by?排序列 desc)

row_number() over()分組排序功能:

在使用 row_number() over()函數時候,over()里頭的分組以及排序的執行晚于 where 、group by、??order by 的執行。

例一:

表數據:

create table TEST_ROW_NUMBER_OVER(id varchar(10) not null,name varchar(10) null,age varchar(10) null,salary int null
);
select * from TEST_ROW_NUMBER_OVER t;insert into TEST_ROW_NUMBER_OVER(id,name,age,salary) values(1,'a',10,8000);
insert into TEST_ROW_NUMBER_OVER(id,name,age,salary) values(1,'a2',11,6500);
insert into TEST_ROW_NUMBER_OVER(id,name,age,salary) values(2,'b',12,13000);
insert into TEST_ROW_NUMBER_OVER(id,name,age,salary) values(2,'b2',13,4500);
insert into TEST_ROW_NUMBER_OVER(id,name,age,salary) values(3,'c',14,3000);
insert into TEST_ROW_NUMBER_OVER(id,name,age,salary) values(3,'c2',15,20000);
insert into TEST_ROW_NUMBER_OVER(id,name,age,salary) values(4,'d',16,30000);
insert into TEST_ROW_NUMBER_OVER(id,name,age,salary) values(5,'d2',17,1800);


一次排序:對查詢結果進行排序(無分組)

select id,name,age,salary,row_number()over(order by salary desc) rn
from TEST_ROW_NUMBER_OVER t
結果:

進一步排序:根據id分組排序

select id,name,age,salary,row_number()over(partition by id order by salary desc) rank
from TEST_ROW_NUMBER_OVER t

結果:

?再一次排序:找出每一組中序號為一的數據

select * from(select id,name,age,salary,row_number()over(partition by id order by salary desc) rank
from TEST_ROW_NUMBER_OVER t)
where rank <2

結果:

排序找出年齡在13歲到16歲數據,按salary排序

select id,name,age,salary,row_number()over(order by salary desc) ?rank
from TEST_ROW_NUMBER_OVER t where age between '13' and '16'

結果:結果中 rank 的序號,其實就表明了 over(order by salary desc) 是在where age between and 后執行的

例二:

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.統計每一個客戶所有的訂單中購買的金額最小,而且并統計改訂單中,客戶是第幾次購買的:

思路:利用臨時表來執行這一操作。

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

6.篩選出客戶第一次下的訂單。

思路。利用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?

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'?

?
————————————————
版權聲明:本文為CSDN博主「一彡十」的原創文章

?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/447424.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/447424.shtml
英文地址,請注明出處:http://en.pswp.cn/news/447424.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

解決:您需要來自xxx的權限才能對此文件夾進行更改(電腦系統取得管理員權限)

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 1.莫名的一個項目工程代碼就打不開了。提示信息為&#xff1a; 2. 刪除也不行&#xff0c;更新也不行&#xff0c;火大&#xff0c;我惹…

程序員父親的遺產——編程十誡

我的父親在和我徹談編程兩個星期之后就去世了。 那個時候我22歲&#xff0c;一個剛剛完成美學學士畢業設計的大四學生。而我的父親62歲&#xff0c;比大多數我同齡人的父親都要老。早在60年代&#xff0c;他就已經在田納西理工大學開始編程了&#xff0c;那個時候他在穿孔卡片…

解決:Can not deserialize instance of com.xxx.xx.XXModel out of START_ARRAY toke

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 1. json數據解析報錯&#xff1a; Can not deserialize instance of com.xxx.xxx.model.XXXModel out of START_ARRAY token 2. 需要一…

HEVC標準概覽

HEVC標準概覽HEVC&#xff08;高效視頻編碼標準&#xff09;是ITU-T VCEG&#xff08;國際電聯電信標準化部視頻編碼組&#xff09;與ISO/IEC MPEG&#xff08;國際標準化組織國際電工委員會視頻標準化組&#xff09;的合作組織JCT-VC最新項目。ITU-T和ISO/IEC計劃在2013年1月共…

解決:Unable to identify index name. XXXModel is not a Document. Make sure the document class is annota

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 1. 往 elasticsearch 寫入數據調用 index 方法&#xff0c;執行報錯&#xff1a; Unable to identify index name. XXXModel is not a …

為什么年事已高的我還在編程?

每一個行業的從業人員都會有變老的那一刻&#xff0c;難道變老了之后還要繼續從事之前的工作嗎&#xff1f;估計沒人愿意&#xff0c;除非是體力上吃得消的。接下來所講述的就是作為程序員的碼農們該如何迎接慢慢變老之后的工作轉變&#xff01;人們都會期望隨著歲數的增加&…

解決:redis.clients.jedis.exceptions.JedisDataExceptionERR This instance has cluster support disabled

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 1. springCloud 項目啟動工程&#xff0c;redis 集群連接報錯&#xff1a; Caused by: redis.clients.jedis.exceptions.JedisDataExcep…

小兩口攢錢不吵嘴 用理財加固你的愛情

【導讀】終于和你的他生活在一起了&#xff0c;幸福嗎&#xff1f;爭吵嗎&#xff1f;困惑嗎&#xff1f;據統計&#xff0c;夫妻間的矛盾大多跟錢有關&#xff0c;怎么花錢、怎么攢錢往往是兩個人不能統一的原因。鑒于此&#xff0c;她理財總結了幾條財蜜關于夫妻怎么攢錢理財…

解決: Intellij IDEA 運行報錯 Command line is too long

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 1. idea啟動工程報錯&#xff1a; 2. 網上找到2個方法。方法一我試了有效果。方法二我同事試了有效果。 方法一&#xff1a; 修改項目…

年薪50萬碼農轉行賣涼皮,互聯網思維又一次顛覆?

摘要&#xff1a;今年五月份&#xff0c;一位年薪50萬元的碼農哥放棄了碼農的工作&#xff0c;轉身跳到了苦臟累的餐飲行業&#xff0c;每天騎著筋斗云電動車在中關村送外賣的事跡在互聯網上引起了轟動。近日&#xff0c;碼農哥接受了CSDN的采訪&#xff0c;讓我們一窺其轉行背…

hue 查詢 hbase 操作相關參考

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 界面操作說明 進入hue中的hbase 進入表的查詢界面 界面說明 查詢語句 ,表示結束查詢&#xff0c;可以不加 主鍵查詢 輸入主鍵 rowke…

不要做一個浮躁的程序員

1.不要看到別人的回復第一句話就說&#xff1a;給個代碼吧&#xff01;你應該想想為什么。當你自己想出來再參考別人的提示&#xff0c;你就知道自己和別人思路的差異。   2.初學者請不要看太多太多的書那會誤人子弟的&#xff0c;先找本系統的學&#xff0c;很多人用了很久…

解決:elasticsearch 更新報錯:The number of object passed must be even but was [1]

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 1. 錯誤的代碼寫法&#xff1a; Autowiredprivate ElasticsearchOperations esOperations; public void updateAxxxData(List<AxxxMo…

.NET技術+25臺服務器怎樣支撐世界第54大網站

摘要&#xff1a;同時使用Linux和Windows平臺產品&#xff0c;大量使用靜態的方法和類&#xff0c;Stack Overflow是個重度性能控。同時&#xff0c;取代橫向擴展&#xff0c;他們堅持著縱向擴展思路&#xff0c;因為“硬件永遠比程序員便宜”。 【編者按】StackOverflow是一個…

apache sgoop 導入數據到 oracle、導出數據到 oracle 實現

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 業務場景&#xff1a;是在oracle 數據庫和 hive 數據庫中 &#xff0c;有多個相同結構的表&#xff0c;要求數據從2個庫定時雙向同步。…

最佳的開源云項目有哪些?

Linux.com和The New Stack聯合起來做了一個調查&#xff1a;你認為的最受歡迎的開源云項目是哪些&#xff1f;調查涵蓋了hypervisors、IaaS、PaaS、管理和服務開通和其它類別的開源項目。所有項目較為成熟的、有規模的開源云項目。下一代的企業正在使用開放云技術打造完全不同的…

我們正處在“后開源”時代?

越來越多的軟件不是用來出售的&#xff0c;而是用來增強互聯網上所提供的各種服務的功能。開源的實際好處已經超過了你所看到的一面&#xff0c;但是現在還是有人糾結是用什么樣的開源協議&#xff0c;只是不明白為什么還要和開源協議作斗爭呢&#xff1f;自由軟件和開源軟件支…

解決:-source 1.6 中不支持 diamond 運算符 [ERROR] (請使用 -source 7 或更高版本以啟用 diamond 運算符)

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 1. 工程打包 mvn clean install 執行報錯&#xff1a; 2. 解決方法&#xff0c;在pom中加上如下配置&#xff1a; <plugin><gr…

是什么摧毀了程序員的工作效率

本文是html5tricks原創翻譯&#xff0c;轉載請看清文末的轉載要求&#xff0c;謝謝合作&#xff01; 下圖是摘自網上有關程序員工作效率的論述。 正如Homer Simpson所說&#xff0c;如果這是真的&#xff0c;那就有意思了。 我之所以不能一針見血地發現如何才能高效工作的秘密…

解決:single failed: For artifact {null:null:null:jar}: The groupId cannot be empty. 把工程依賴的jar包打到入jar中

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 1. 執行 mvn clean install 報錯&#xff1a; Execution make-assembly of goal org.apache.maven.plugins:maven-assembly-plugin:2.4…