oracle row_number() 函數的應用

row_number() 是分析函數,分析函數主要用於有分組分析的SQL中,針對樓主使用的row_number() 函數,我給簡單解釋一下
分析函數的語法如下:
<函數>(<字段1>,<字段2>,...)over (partition by <分組字段> order by <分組後排序字段> <窗口字句>)
其中<>中的內容可以根據實際使用的函數來改變

而row_number() 函數的語法中partition by 和order by 是必須要有的部分,就好像寫select要有from部分一樣,樓主的sql中缺失了關鍵字partition by 所以會報錯

我來舉個row_number() 函數用法的例子來幫助理解:
現在有表A(ID,姓名,部門,工資)
ID    姓名   部門   工資
1     張三   部門A   1000
2     李四   部門A   2000
3     王五   部門B   2000
4     趙六   部門B   3000
5     錢七   部門C   1000

如果我想取得各個部門中工資最多的人的信息(姓名,部門,工資),那麼使用分析函數會比較方便
select X.姓名,X.部門,X.工資 from
(select row_number() over(partition by 部門 order by 工資 desc) as No,姓名,部門,工資
from 表A) X
where X.No=1

實行結果:
姓名   部門   工資
李四   部門A   2000
趙六   部門B   3000
錢七   部門C   1000

發佈了33 篇原創文章 · 獲贊 5 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章