hive sql row_number 和rank
时间: 2023-07-18 14:32:11 浏览: 91
Hive中分组取topN_row_number-rank和dense_rank的使用.pdf
在Hive SQL中,ROW_NUMBER和RANK都是用于对查询结果进行排序的窗口函数。
其中,ROW_NUMBER函数会为排序后的每一行分配一个唯一的数字,该数字从1开始递增。例如:
```
SELECT name, score, ROW_NUMBER() OVER (ORDER BY score DESC) as rank
FROM students;
```
上述代码会对学生表按照分数降序排列,并为每个学生分配一个排名(即ROW_NUMBER),结果类似于下面的表格:
```
| name | score | rank |
|-------|-------|------|
| Alice | 95 | 1 |
| Bob | 88 | 2 |
| Cindy | 85 | 3 |
| David | 76 | 4 |
```
而RANK函数也是用于排序,但它会为分数相同的行分配相同的排名,且下一个排名将跳过相同数量的行。例如:
```
SELECT name, score, RANK() OVER (ORDER BY score DESC) as rank
FROM students;
```
上述代码同样会对学生表按照分数降序排列,但是会为分数相同的学生分配相同的排名(即RANK),结果类似于下面的表格:
```
| name | score | rank |
|-------|-------|------|
| Alice | 95 | 1 |
| Bob | 88 | 2 |
| Cindy | 85 | 3 |
| David | 76 | 4 |
| Eric | 76 | 4 |
```
阅读全文