怎么使用dense_rank()over()
时间: 2024-01-11 18:19:40 浏览: 59
`DENSE_RANK()`是一种窗口函数,它可以基于某个列的值为每一行分配一个排名。`DENSE_RANK()`函数的语法如下:
```
DENSE_RANK() OVER (
[PARTITION BY partition_expression, ... ]
ORDER BY sort_expression [ASC | DESC], ...
)
```
其中,`PARTITION BY`子句可以将数据分成多个分区,窗口函数将在每个分区内计算独立的排名。`ORDER BY`子句用于指定排序规则,可以按照一个或多个列进行排序。如果需要按照多个列排序,则可以在`ORDER BY`子句中指定多个排序规则。
下面是一个使用`DENSE_RANK()`函数的例子,假设我们有一个名为`employees`的表,其中包含员工的姓名和薪水信息:
```
+------+--------+
| Name | Salary |
+------+--------+
| John | 40000 |
| Jane | 50000 |
| Mary | 40000 |
| Mark | 60000 |
| Jack | 50000 |
+------+--------+
```
我们可以使用以下SQL语句,基于薪水信息为每个员工分配一个排名:
```
SELECT Name, Salary, DENSE_RANK() OVER (ORDER BY Salary DESC) as Rank
FROM employees;
```
执行以上SQL语句后,我们将会得到以下结果:
```
+------+--------+------+
| Name | Salary | Rank |
+------+--------+------+
| Mark | 60000 | 1 |
| Jane | 50000 | 2 |
| Jack | 50000 | 2 |
| John | 40000 | 3 |
| Mary | 40000 | 3 |
+------+--------+------+
```
可以看到,`DENSE_RANK()`函数为每个员工分配了一个排名,排名值越小表示薪水越高。
阅读全文