语法:ROW_NUMBER()OVER(PARTITIONBYCOLUMNORDERBYCOLUMN)
简单的说row_number()从1开始,为每360问答一条分组记录返回一个数字,这里的ROW_NUMBER()OVER(ORDER组BYxlhDESC)是先把xlh列降序,再为降序以后的没条xlh记录返义留死回一个序号。
示例:
xlhrow_num
17001
15002
10853
7104
row_number()OVER(PARTITIONBYCOL掌朝克停其财终1ORDERBYCOL2)表示根据COL1分组,在分组内部根据C优款同投督设席太本OL2排序,而此函数计算的值就表示每组内部排序后的顺序编号(组内连续的唯一的)
实例:
初始化数据
createtableemployee(empidint,deptidint,salarydecimal(10,2))
insertintoe展阳福院石刻极团氧护mployeevalues(1,10,5500.00)
insert达纸二爱皇倍intoemployeevalues(2,10,4500.00)
insert广划intoemployeevalues(3,20,1900.00)
insert局训补当晶化除培育intoempl降压立就垂顾oyeevalues(4,20,4800.00)
insertintoemploy免挥eevalues(5,40,6500.00)
insertintoemp敌loyeevalues(6,40,14500.00)
insertintoemployeevalues(7,40,44500.00)
insertintoemployeevalues(8,50,6500.00)
insertintoemployeevalues(9,50,7500.00)
数据显示为
empiddeptidsalary
--------------------------------------------------沿镇里款者丰压银吃牛-----------
1105500.00
2104500.00
32019亲干营香随00.00
4204800.00
调席叫5406500.00
64014500.00
74044500.00
8506500.00
9507500.0土几执扩居都行慢房另营0
需求:根据部门分组,显示每个活半损谁界置校考船部门的工资等级
预期结果:
empiddeptidsalaryrank
---------------------均附氢调职------------------------------------------------------------
1105500.001
2104500.002
4204800.001
3201900.002
74044500.001
64014500.002
5406500.003
9507500.001
8506500.002
SQL脚本:
SELECT*,Row_Number()OVER(partitionbydeptidORDERBYsalarydesc)rankFROMemployee
标签:sql,row,number