dense_rank()窗口函数
时间: 2023-09-08 17:15:58 浏览: 121
dense_rank()是一种窗口函数,它用于计算在排序结果集中,每个行的密集排名。与rank()函数不同的是,dense_rank()不会跳过相同的排名值,而是按照严格的顺序连续排名。这意味着如果有相同的值,它们将被赋予相同的密集排名。
下面是一个使用dense_rank()函数的示例:
假设我们有一个名为sales的表,其中包含以下数据:
| 销售员 | 销售额 |
|---------|---------|
| John | 100 |
| Alice | 200 |
| John | 150 |
| Bob | 200 |
| Alice | 300 |
要计算每个销售员的密集排名,可以使用以下SQL查询:
SELECT salesman, sales, DENSE_RANK() OVER (ORDER BY sales DESC) AS dense_rank
FROM sales;
这将返回以下结果:
| 销售员 | 销售额 | 密集排名 |
|---------|---------|----------|
| Alice | 300 | 1 |
| Bob | 200 | 2 |
| Alice | 200 | 3 |
| John | 150 | 4 |
| John | 100 | 5 |
如上所示,每个销售员根据其销售额获得了一个密集排名。注意,Alice和John有相同的销售额,但它们分别获得了不同的密集排名。
阅读全文