📜  PostgreSQL – CUME_DIST函数(1)

📅  最后修改于: 2023-12-03 14:45:34.977000             🧑  作者: Mango

PostgreSQL – CUME_DIST函数

简介

在 PostgreSQL 中,CUME_DIST 是一个用于计算累积分布函数的窗口函数。该函数计算了给定表达式的值在数据集中的相对位置。

CUME_DIST 函数用于确定某个特定值在一个排序数据集中的位置。它将计算累积分布的百分比,即小于或等于某个特定值的值占总数的百分比。

语法

CUME_DIST 函数的语法如下所示:

CUME_DIST() WITHIN GROUP (ORDER BY expr) OVER (PARTITION BY partition_expr)

其中:

  • expr:用于排序的表达式。
  • partition_expr:可选的分区表达式。如果指定了分区表达式,CUME_DIST 将计算每个分区的累积分布。
示例

让我们通过以下示例来理解 CUME_DIST 函数的用法。

假设有一个名为 students 的表,包含以下数据:

| id | name | score | | --- | ------ | ----- | | 1 | Alice | 90 | | 2 | Bob | 80 | | 3 | Charlie| 70 | | 4 | David | 80 | | 5 | Eve | 90 |

现在,我们想要查找每个学生的 score 在整个数据集中的累积分布百分比。我们可以使用 CUME_DIST 函数来实现:

SELECT id, name, score, CUME_DIST() WITHIN GROUP (ORDER BY score) OVER () AS cume_dist
FROM students;

这将返回以下结果:

| id | name | score | cume_dist | | --- | ------ | ----- | --------- | | 1 | Alice | 90 | 0.8 | | 2 | Bob | 80 | 0.4 | | 3 | Charlie| 70 | 0.2 | | 4 | David | 80 | 0.4 | | 5 | Eve | 90 | 0.8 |

可以看到,Alice 和 Eve 的分数在整个数据集中的累积分布都是 80%。Bob 和 David 的分数在累积分布中都是 40%。Charlie 的分数在累积分布中为 20%。

总结

CUME_DIST 函数是 PostgreSQL 中用于计算累积分布的窗口函数。通过使用 CUME_DIST 函数,我们可以确定每个值在数据集中的相对位置。这对于统计和数据分析非常有用。