rank dense_rank row_number
时间: 2023-04-21 11:04:17 浏览: 109
Oracle开发之分析函数(Rank, Dense_rank, row_number)
5星 · 资源好评率100%
rank、dense_rank和row_number都是窗口函数,用于对查询结果集中的行进行排序和排名。
rank函数用于计算每行在排序结果中的排名,如果有相同的值,则会跳过相同的排名,下一个排名会加1。
dense_rank函数也用于计算每行在排序结果中的排名,但是相同的值会被视为同一排名,下一个排名不会加1。
row_number函数用于为每行分配一个唯一的行号,不考虑排序结果中的排名。
例如,假设有以下查询结果集:
| 姓名 | 分数 |
|------|------|
| 张三 | 90 |
| 李四 | 80 |
| 王五 | 90 |
| 赵六 | 70 |
使用rank函数进行排序和排名后的结果如下:
| 姓名 | 分数 | 排名 |
|------|------|------|
| 张三 | 90 | 1 |
| 王五 | 90 | 1 |
| 李四 | 80 | 3 |
| 赵六 | 70 | 4 |
使用dense_rank函数进行排序和排名后的结果如下:
| 姓名 | 分数 | 排名 |
|------|------|------|
| 张三 | 90 | 1 |
| 王五 | 90 | 1 |
| 李四 | 80 | 2 |
| 赵六 | 70 | 3 |
使用row_number函数进行排序和排名后的结果如下:
| 姓名 | 分数 | 行号 |
|------|------|------|
| 张三 | 90 | 1 |
| 李四 | 80 | 2 |
| 王五 | 90 | 3 |
| 赵六 | 70 | 4 |
阅读全文