1.开窗函数分为三种,row_number(partition by column1 order by column2), rank(),dense_rank()
2.(!!!!)开窗函数可以在不减少行的条件下,同时完成分组和排名
3.举个例子:如果row_number(partition by 班级id order by 成绩),那么“排名”会是这样的:
班级id | 学生姓名(唯一) | 成绩 | 排名 |
1 | a | 98 | 2 |
1 | b | 100 | 1 |
2 | c | 60 | 1 |
2 | d | 30 | 2 |
3 | e | 96 | 3 |
3 | f | 98 | 1 |
3 | g | 97 | 2 |
4.row_number不会重复;rank是按照正常逻辑,允许并列排名;dense_rank允许并列排名,但是并列项不占用名额。