天天看點

ROW_NUMBER() OVER函數的基本用法文法:ROW_NUMBER() OVER(PARTITION BY COLUMN ORDER BY COLUMN)

文法:ROW_NUMBER() OVER(PARTITION BY COLUMN ORDER BY COLUMN)

方法/步驟

簡單的說row_number()從1開始,為每一條分組記錄傳回一個數字,這裡的ROW_NUMBER() OVER (ORDER BY xlh DESC) 是先把xlh列降序,再為降序以後的沒條xlh記錄傳回一個序号。 

ROW_NUMBER() OVER函數的基本用法文法:ROW_NUMBER() OVER(PARTITION BY COLUMN ORDER BY COLUMN)

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)

資料顯示為

ROW_NUMBER() OVER函數的基本用法文法:ROW_NUMBER() OVER(PARTITION BY COLUMN ORDER BY COLUMN)

需求:根據部門分組,顯示每個部門的工資等級

預期結果:

ROW_NUMBER() OVER函數的基本用法文法:ROW_NUMBER() OVER(PARTITION BY COLUMN ORDER BY COLUMN)

SQL腳本:

SELECT *, Row_Number() OVER (partition by deptid ORDER BY salary desc) rank FROM employee