ROW_NUMBER()
- простая нумерация строк, каждая новая строка это + 1.
num |
row_number() |
101 |
1 |
102 |
2 |
103 |
3 |
103 |
4 |
104 |
5 |
RANK()
- если у строк одинаковое значение, то возвращается одинаковый ранг, но пропускается следующий ранг.
num |
rank() |
101 |
1 |
102 |
2 |
103 |
3 |
103 |
3 |
104 |
5 |
DENSE_RANK()
- если у строк одинаковое значение, то возвращается одинаковый ранг, следующий ранг идет по порядку и не пропускается в отличие от RANK()
.
num |
dense_rank() |
101 |
1 |
102 |
2 |
103 |
3 |
103 |
3 |
104 |
4 |
percent_rank() - относительный ранг текущей строки: (rank - 1) / (общее число строк - 1)
num |
percent_rank() |
101 |
0% |
102 |
20% |
103 |
40% |
103 |
40% |
104 |
80% |
ntile() - разбивает строку на n групп и каждой присваивает номер группы в зависимости от расположения строки.
num |
ntile(3) |
101 |
1 |
102 |
1 |
103 |
2 |
103 |
2 |
104 |
3 |