钟二网络头像

钟二网络

探索SQL查询技巧、Linux系统运维以及Web开发前沿技术,提供一站式的学习体验

  • 文章92531
  • 阅读854330
首页 SQL 正文内容

sql中的dense_rank

钟逸 SQL 2024-05-25 10:27:21 41

DENSE_RANK 函数是一个窗口函数,用于对数据集中的行进行排名。它返回一个整数,表示每行的排名,与排序顺序一致。不同于 RANK 函数,DENSE_RANK 对相等值的排名相同,而不会跳过任何排名。

二、DENSE_RANK 函数的语法

DENSE_RANK 函数的语法如下:

DENSE_RANK() OVER (PARTITION BY 分区表达式 ORDER BY 排序表达式)

PARTITION BY:指定对哪些列进行分区。每个分区中的行将单独进行排名。

ORDER BY:指定按哪些列进行排序。排序结果将作为排名依据。

三、使用 DENSE_RANK

DENSE_RANK 函数可用于各种场景:

* 对数据集中的行进行排名,并分配唯一的排名。

* 对相同值的排名相同,以进行分组和汇总。

* 创建独特标识,用于区分具有相似值的记录。

四、示例

考虑以下数据表:

| id | name | score |

|---|---|---|

| 1 | John | 90 |

| 2 | Mary | 85 |

| 3 | Bob | 85 |

| 4 | Alice | 95 |

| 5 | Tom | 80 |

要对表中的行按分数从高到低进行排名,可以使用以下查询:

SELECT id, name, score, DENSE_RANK() OVER (ORDER BY score DESC) AS rank

FROM table_name;

查询结果如下:

| id | name | score | rank |

|---|---|---|---|

| 4 | Alice | 95 | 1 |

| 1 | John | 90 | 2 |

| 2 | Mary | 85 | 3 |

| 3 | Bob | 85 | 3 |

| 5 | Tom | 80 | 5 |

DENSE_RANK 给出每行的排名,即使 Mary 和 Bob 的分数相同,它们也具有相同排名 (3)。

文章目录
    搜索