Rank函数使用方法详解?

频道:游戏资讯 日期: 浏览:16

  在不同的工具和编程语言中,RANK 函数的具体用法有所不同。以下是几种常见场景下的用法说明,帮助你快速掌握其核心逻辑:

Rank函数使用方法详解?


1. SQL 中的 RANK()

用途:对查询结果进行排名(常用于分析函数)。

语法

RANK() OVER (

[PARTITION BY 分组字段]

ORDER BY 排序字段 [ASC|DESC]

)

特点

  • 相同值会获得相同排名,且下一个排名会跳过重复值后的位置(如:1, 2, 2, 4)。
  • 使用 DENSE_RANK() 可避免跳过名次(如:1, 2, 2, 3)。

示例

SELECT 

student_id,

score,

RANK() OVER (ORDER BY score DESC) AS rank

FROM exam_scores;


2. Excel 中的 RANK 函数

用途:对数值在数据集中的排名进行计算。

语法

=RANK(number, ref, [order])

  • number: 要排名的数值。
  • ref: 数据范围(需绝对引用,如 $A$1:$A$10)。
  • [order]: 可选,0 或省略表示降序,1 表示升序。

示例

=RANK(B2, $B$2:$B$100, 0)  # 计算 B2 在 B2:B100 中的降序排名


3. Python Pandas 中的 rank()

用途:为 DataFrame 或 Series 中的值分配排名。

语法

df['rank'] = df['column'].rank(method='method', ascending=False)

关键参数

  • method: 处理相同值的方式,可选 'average', 'min', 'max', 'first', 'dense'
  • ascending: False 为降序排名(默认 True 升序)。

示例

import pandas as pd

data = {'score': [90, 85, 85, 80]}

df = pd.DataFrame(data)

df['rank'] = df['score'].rank(method='dense', ascending=False)

# 输出:90→1, 85→2, 85→2, 80→3


关键区别总结

工具 并列排名处理 是否跳过名次 分组功能
SQL RANK() 跳过,DENSE_RANK() 不跳过 是(RANK) 支持 PARTITION BY
Excel 默认跳过名次(类似 SQL 的 RANK
Pandas 通过 method 参数灵活控制 可自定义 需手动分组


使用场景建议

  • 快速简单排名 → Excel 函数
  • 数据库分析 → SQL 窗口函数
  • 复杂数据处理 → Python Pandas

  根据你的具体需求选择合适的工具,注意处理重复值时的排名逻辑差异即可。