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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- SQL Server中row_number函式的常見用法SQLServer函式
- string 函式的基本用法函式
- 分割槽函式Partition By的基本用法函式
- mysql自動排序函式dense_rank() over()、rank() over()、row_num() over()用法和區別MySql排序函式
- sql中row_number over語句SQL
- 分割槽函式partition by的基本用法【轉載】函式
- MySQL8.0-分組函式ROLLUP的基本用法(GROUPING)MySql函式
- Oracle分析函式之開窗函式over()詳解Oracle函式
- GetModuleFileName函式的用法函式
- Instr函式的用法函式
- Spark Streaming--開窗函式over()Spark函式
- row_number() OVER (PARTITION BY COL1 ORDER BY COL2)
- 【Oracle的NVL函式用法】Oracle函式
- MySQL中的ROW_NUMBER視窗函式簡單瞭解下MySql函式
- abs函式用法函式
- StretchBlt函式和BitBlt函式的區別和用法函式
- C語言中函式printf()和函式scanf()的用法C語言函式
- sys_context函式的用法Context函式
- python中zip()函式的用法Python函式
- PostgreSQL>視窗函式的用法SQL函式
- C++ 函式 realloc 的用法C++函式
- Excel函式的初級用法Excel函式
- Matlab中erf函式的用法Matlab函式
- pytorch tensor的基本函式PyTorch函式
- python函式的基本使用Python函式
- Python range() 函式用法Python函式
- SSD-函式用法函式
- SQL LEN()函式用法SQL函式
- Python排序函式用法Python排序函式
- EXCEL 基本函式Excel函式
- Python中的split()函式的用法Python函式
- MySQL自定義變數實現row_number分析函式的天坑MySql變數函式
- C語言中qsort函式的用法C語言函式
- C語言函式sscanf()的用法C語言函式
- php array_filter() 函式的用法PHPFilter函式
- C — 快排函式 qsort 的用法函式
- python sorted()函式的引數用法Python函式
- python函式符號sympy的用法Python函式符號
- C++中函式呼叫的用法C++函式