📣
TiDB Cloud Premium 开放公测中。为企业级工作负载提供无限扩展、即时弹性伸缩和高级安全保障。此页面由 AI 自动翻译,英文原文请见此处。

CUME_DIST



计算每一行值的累积分布。返回值小于或等于当前行值的行所占的比例。

另请参阅:PERCENT_RANK

语法

CUME_DIST() OVER ( [ PARTITION BY partition_expression ] ORDER BY sort_expression [ ASC | DESC ] )

参数:

  • PARTITION BY:可选。将行划分为分区
  • ORDER BY:必需。确定分布的排序顺序
  • ASC | DESC:可选。排序方向(默认值:ASC)

说明:

  • 返回介于 0 和 1 之间的值(不包括 0,包括 1)
  • 公式:(小于或等于当前值的行数)/(总行数)
  • 对于最大值,始终返回 1.0
  • 适用于计算百分位数和累计百分比

示例

-- Create sample data CREATE TABLE scores ( student VARCHAR(20), score INT ); INSERT INTO scores VALUES ('Alice', 95), ('Bob', 87), ('Charlie', 87), ('David', 82), ('Eve', 78);

计算累积分布(显示每个分数及以下分数的学生所占百分比):

SELECT student, score, CUME_DIST() OVER (ORDER BY score) AS cume_dist, ROUND(CUME_DIST() OVER (ORDER BY score) * 100) AS cumulative_percent FROM scores ORDER BY score;

结果:

student | score | cume_dist | cumulative_percent --------+-------+-----------+------------------- Eve | 78 | 0.2 | 20 David | 82 | 0.4 | 40 Bob | 87 | 0.8 | 80 Charlie | 87 | 0.8 | 80 Alice | 95 | 1.0 | 100

文档内容是否有帮助?