ROW_NUMBER() OVER函式的基本用法
語法:ROW_NUMBER() OVER(PARTITION BY COLUMN ORDER BY COLUMN)
簡單的說row_number()從1開始,為每一條分組記錄返回一個數字,這裡的ROW_NUMBER() OVER (ORDER BY xlh DESC) 是先把xlh列降序,再為降序以後的沒條xlh記錄返回一個序號。
示例:
xlh row_num
1700 1
1500 2
1085 3
710 4
row_number() OVER (PARTITION BY COL1 ORDER BY COL2) 表示根據COL1分組,在分組內部根據 COL2排序,而此函式計算的值就表示每組內部排序後的順序編號(組內連續的唯一的)
例項:
初始化資料
create table employee (empid int ,deptid int ,salary decimal(10,2))
insert into employee values(1,10,5500.00)
insert into employee values(2,10,4500.00)
insert into employee values(3,20,1900.00)
insert into employee values(4,20,4800.00)
insert into employee values(5,40,6500.00)
insert into employee values(6,40,14500.00)
insert into employee values(7,40,44500.00)
insert into employee values(8,50,6500.00)
insert into employee values(9,50,7500.00)
資料顯示為
empid deptid salary
----------- ----------- ---------------------------------------
1 10 5500.00
2 10 4500.00
3 20 1900.00
4 20 4800.00
5 40 6500.00
6 40 14500.00
7 40 44500.00
8 50 6500.00
9 50 7500.00
需求:根據部門分組,顯示每個部門的工資等級
預期結果:
empid deptid salary rank
----------- ----------- --------------------------------------- --------------------
1 10 5500.00 1
2 10 4500.00 2
4 20 4800.00 1
3 20 1900.00 2
7 40 44500.00 1
6 40 14500.00 2
5 40 6500.00 3
9 50 7500.00 1
8 50 6500.00 2
SQL指令碼:
SELECT *, Row_Number() OVER (partition by deptid ORDER BY salary desc) rank FROM employee
轉自:http://www.cnblogs.com/digjim/archive/2006/09/20/509344.html
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26613085/viewspace-1145927/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- ROW_NUMBER() OVER() 分析函式的用法函式
- Oracle 中的 ROW_NUMBER() OVER() 分析函式的用法Oracle函式
- row_number() over函式函式
- OVER(PARTITION BY)函式用法函式
- lead lag rank()over()dense_rank()row_number()over()rollupcube幾大分析函式函式
- fork()函式的基本用法函式
- SQL Server中row_number函式的常見用法SQLServer函式
- string 函式的基本用法函式
- 巧用row_number() over()函式,選取重複記錄中想要的值函式
- row_number() over,rank() over,dense_rank() over的區別
- mysql自動排序函式dense_rank() over()、rank() over()、row_num() over()用法和區別MySql排序函式
- 分析函式 over函式
- oracle下資料的排序分組row_number() over()--分析函式,可用於去重Oracle排序函式
- sum()over()和count()over()分析函式函式
- 【函式】oracle視窗函式over()的理解函式Oracle
- SQL語句中的rank () over , row_number() over ,rank_dense ()SQL
- Oracle 中分析函式用法之--rank(),dense_rank(),partition,over()Oracle函式
- Oracle over()函式使用Oracle函式
- oracle的分析函式over 及開窗函式Oracle函式
- 【Analytic】分析函式之ROW_NUMBER函式函式
- 分析函式rank() row_number函式
- sql中row_number over語句SQL
- getopt_long函式基本用法-linux函式Linux
- 理解了row_number()over (partition by order by )的方法
- oracle的分析函式over(Partition by...) 及開窗函式Oracle函式
- oracle over函式 詳解(轉)Oracle函式
- Oracle分析函式之開窗函式over()詳解Oracle函式
- SqlServer 分頁 ROW_NUMBER() OVER(Order by * DESC ) AS RowNumberSQLServer
- MySQL8.0-分組函式ROLLUP的基本用法(GROUPING)MySql函式
- 分析函式學習3 ROW_NUMBER函式
- oracle分析函式,keep and over解說Oracle函式
- ascii函式和substr函式的用法ASCII函式
- GetModuleFileName函式的用法函式
- createStyleSheet()函式的用法函式
- qsort函式的用法函式
- COALESCE函式的用法。函式
- 視窗函式 row_number 去重複函式
- rank,dense_rank,row_number 分析函式函式