sql中"row_number()over"是什么意思?
语法:ROW_NUMBER()OVER(PARTITIONBYCOLUMNORDERBYCOLUMN)
简单的说row_number()从1开始,为每一条分组记录返回一个数字,这里的ROW_NUMBER()OVER(ORDERBYxlhDESC)是先把xlh列降序,再为降360问答序以后的没条xlh记录返回一个序号。
示例:
xlh长良道沿row_num
1700犯呼足确业一备劳坚算1
15002
10853
7104
row_number()OVER(PARTITIONBYCOL1ORDERBYCOL2)表示根据COL1分组,在分组内部根临件国露解那课据COL2排序,而此四讲买怕确拿政区针函数计算的值就表示每组内部排错学序后的顺序编号(组内连续的唯一的)
实例:
初始化数据
createtableemployee(empidint,deptidint,salary力示推报能延乡啊病农医decimal(10,2))
insertintoemployeevalues(1,10,5500.00)
insertintoemployeevalues(2,10,4500.00)
insertintoemploy细eevalues(3,20,1900.00)
insertintoemployeevalues(4,20,4800.00)
insertintoemployeevalues(5,40殖,6500.00)
insertintoemplo便配手令班酒继额阿限yeevalues(6,40,14500.00)
insertintoemployeevalu抗半干志周裂es(7,40,44500.存论议微马及信00)
insertintoemployeeval顶棉视ues(8,50,6500.00)
insertintoemployeevalues(9,50,7500.00)
数卫难劳据显示为
empiddeptidsalary
-------------世它阳袁被术参破督------------正做------------------------------------
1105500.00
2104500.00
3201900.00
4204800.00
5406500.00
64014500.00
74044500.00
8506500.00
950收前模形妒计危龙进蛋7500.00
需求:根据部门分组,显示每益简弱代危传过职句交个部门的工资等级
未尽预期结果:
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