您的位置首页百科问答

sql中row_number()over是什么意思

sql中row_number()over是什么意思

语法:ROW_NUMBER()OVER(PARTITIONBYC来自OLUMNORDERB激行YCOLUMN)

简单的说row_numbe360问答r()从1开始,专一岩传为每一条分组记录返回一个数字,这里的ROW_NUMBER()OVER(ORDERBYxlhDESC)是先把xlh列降序,再为降序以后的没条xlh记录返回一个序号。

示例:

xlhrow_num

170理析将官正布快灯01

15002

108市参民呼夜53

7104

row_number()OVER(PAR之观又帮最且往样答额TITIONBYCOL1ORDERBYCOL2)表示根据COL1分组,在分组内部根据COL2排序,而此函数计算的值就表示每组内部排序后的顺序编号(组内连续的唯一的)

实例:

初始化数据

createtableemployee(empidint,deptidint,salarydecimal(10,2))

insertintoemployeevalues(1,10,5觉货请被小然评句花权满500.00)

insertin林束toemployeevalu知es(2,10,4500.00)

insert下线盐吧抓场义书还劳判intoemployeevalues(3,20,1900.00)

insertintoemployeevalues(4,20,4800.00)

inserti倒条位ntoemploy雨界字诉讨二数富年eevalues(5,40,6500.00)

insertintoemployeevalues(6,40,14500.00)

insertintoemployeevalues(7,40,44500.00)

insertintoemployeevalu族担阿位es(8,50,6地应宁该福教解500.00)

insertintoemployeevalues(9,50,7500.00)

数据显示为

e束验职宁甚钢湖耐赵示mpiddeptidsalary

-------------------------------------------------------------

1105500.00

2104500.00

3201900.00

4204800.00

5406500.00

64014500.00

74044500.00

8506500.00

9507500.00

需求:根据部字粮占犯无怎府面老主层门分组,显示每个部门的工资等何老其密升级

预期结果:

empiddeptidsalary死种整华价省持位功rank

---------------------------------------------------------------------------------

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