📅  最后修改于: 2023-12-03 14:45:34.977000             🧑  作者: Mango
在 PostgreSQL 中,CUME_DIST 是一个用于计算累积分布函数的窗口函数。该函数计算了给定表达式的值在数据集中的相对位置。
CUME_DIST 函数用于确定某个特定值在一个排序数据集中的位置。它将计算累积分布的百分比,即小于或等于某个特定值的值占总数的百分比。
CUME_DIST 函数的语法如下所示:
CUME_DIST() WITHIN GROUP (ORDER BY expr) OVER (PARTITION BY partition_expr)
其中:
让我们通过以下示例来理解 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 函数,我们可以确定每个值在数据集中的相对位置。这对于统计和数据分析非常有用。