row_number() over(partition by 1 order by 2 desc)
1:表中的某一个列名
2:表中的某一个列名
该函数表示数据按列1分组,分组后各组按列2降序排序,函数返回各行数据在各组中的排序编号
例:select employeeId,departmentId ,salary ,
row_number() over(partition by departmentId order by salary desc) rank from table
表示从表中查找雇员Id,所属部门,薪水,薪水在部门中的名次
employeeId | departmentId | salary |
1 | dept1 | 1111 |
2 | dept2 | 3333 |
3 | dept3 | 5555 |
4 | dept1 | 6666 |
5 | dept2 | 8888 |
6 | dept3 | 9999 |
employeeId | departmentId | salary | rank |
4 | dept1 | 6666 | 1 |
1 | dept1 | 1111 | 2 |
5 | dept2 | 8888 | 1 |
2 | dept2 | 3333 | 2 |
6 | dept3 | 9999 | 1 |
3 | dept3 | 5555 | 2 |
注意:在使用 row_number() over()函数时候,over()里头的分组以及排序的执行晚于 where 、group by、 order by 的执行。