选择 打开 改范围 完整检索页

pgsql.cc 提供对 postgresql.org 官网内容的中文翻译,由 Pigsty 团队维护。

文档 / 函数百科 / 聚合函数

FUNCTION聚合函数

rank

计算假设行的排名,包括间隔,就是说在它的同等行组中第一行的行号。

Computes the rank of the hypothetical row, with gaps; that is, the row number of the first row in its peer group.

聚合函数 引入 9.0(基线) 现存至 20 devel 2 条签名 1 次签名变更

分组
聚合函数
签名数
2 条
引入版本
9.0(基线)
状态
现存
签名变更
1 次
本版来源
本站译文

PostgreSQL 18 手册 · 9.21 聚合函数 官方文档

版本轨迹

相对 PostgreSQL 17 无变化。

签名

PostgreSQL 18 里 rank 的 2 条签名,按上游手册顺序排列。参数名用斜体,类型用弱化色, 之后是返回类型。说明取自本站手册译文:标「沿用」的借用了另一版的译文,标「EN」的本站暂无译文、按英文原文显示。

  1. rank ( args ) WITHIN GROUP ( ORDER BY sorted_args ) → bigint

    计算假设行的排名,包括间隔,就是说在它的同等行组中第一行的行号。
  2. rank () → bigint

    返回当前行的排名,包含间隔;即同等行组中第一行的row_number

演化历史

相邻两个大版本之间的差异,新的在前。版本号链到该版的签名。

  1. PostgreSQL 13 ← 12 手册重排

    这一跳手册重排了函数表的写法,签名文本整体改写,只记函数的增删,不逐条比较签名。

  2. PostgreSQL 9.4 ← 9.3 签名变更

    rank ( args ) WITHIN GROUP (ORDER BY sorted_args) → bigint windowaggregate 说明更新

签名矩阵

每条签名在给出了签名的 18 个版本里的存在情况;方格指向该版的签名。只在正文里提到此函数、没有给出签名的版本不列进来,上面的版本轨迹里仍然有它们。签名文本在 PostgreSQL 13 前后写法不同,跨越那一跳的同一条签名会显示成两行。

存在 不存在

签名 9.09.19.29.39.49.59.61011121314151617181920
rank ( ) → bigint 存在 存在 存在 存在 存在 存在 存在 存在 存在 存在 不存在 不存在 不存在 不存在 不存在 不存在 不存在 不存在
rank ( args ) WITHIN GROUP (ORDER BY sorted_args) → bigint 不存在 不存在 不存在 不存在 存在 存在 存在 存在 存在 存在 不存在 不存在 不存在 不存在 不存在 不存在 不存在 不存在
rank ( args ) WITHIN GROUP ( ORDER BY sorted_args ) → bigint 不存在 不存在 不存在 不存在 不存在 不存在 不存在 不存在 不存在 不存在 存在 存在 存在 存在 存在 存在 存在 存在
rank () → bigint 不存在 不存在 不存在 不存在 不存在 不存在 不存在 不存在 不存在 不存在 存在 存在 存在 存在 存在 存在 存在 存在

同组函数

函数 签名 主签名 版本变动 最近变更
AGGREGATE FUNCTIONS 聚合函数 56 个
any_value 1 any_value ( anyelement ) → same as input type
从非空输入值中返回任意一个值。 现存
array_agg基线 2 array_agg ( anynonarray ORDER BY input_sort_columns ) → anyarray 172 次
将所有输入值,包括空值,收集到一个数组中。 现存
avg基线 7 avg ( smallint ) → numeric
计算所有非空输入值的平均值(算术平均值)。 现存
bit_and基线 4 bit_and ( smallint ) → smallint
计算所有非空输入值的逐位AND。 现存
bit_or基线 4 bit_or ( smallint ) → smallint
计算所有非空输入值的逐位OR。 现存
bit_xor 4 bit_xor ( smallint ) → smallint
计算所有非空输入值的按位异或。 现存
bool_and基线 1 bool_and ( boolean ) → boolean
如果全部非空输入值都为真则返回真,否则返回假。 现存
bool_or基线 1 bool_or ( boolean ) → boolean
如果任何非空输入值为真则返回真,否则返回假。 现存
corr基线 1 corr ( Y double precision, X double precision ) → double precision
计算相关系数。 现存
count基线 2 count ( * ) → bigint
计算输入行的数量。 现存
covar_pop基线 1 covar_pop ( Y double precision, X double precision ) → double precision
计算总体协方差。 现存
covar_samp基线 1 covar_samp ( Y double precision, X double precision ) → double precision
计算样本协方差。 现存
cume_dist基线 2 cume_dist ( args ) WITHIN GROUP ( ORDER BY sorted_args ) → double precision 9.41 次
计算累积分布,也就是(位于假设行之前或与假设行同等的行数)/(总行数)。 现存
dense_rank基线 2 dense_rank ( args ) WITHIN GROUP ( ORDER BY sorted_args ) → bigint 9.41 次
计算假设行的排名,没有间隔;这个功能有效地计数同等行组。 现存
every基线 1 every ( boolean ) → boolean
这是对应bool_and的SQL标准的等效物。 现存
GROUPING 1 GROUPING ( group_by_expression(s) ) → integer
返回一个位掩码以指示哪个GROUP BY表达式没有包含在当前分组集中。 现存
json_agg 1 json_agg ( anyelement ORDER BY input_sort_columns ) → json 171 次
收集所有输入值,包括空值,到一个JSON数组。 现存
json_agg_strict 1 json_agg_strict ( anyelement ) → json
收集所有输入值,跳过空值,到一个JSON数组。 现存
json_arrayagg 1 json_arrayagg ( [ value_expression ] [ ORDER BY sort_expression ] [ { NULL | ABSENT } ON NULL ] [ RETURNING data_type [ FORMAT JSON [ ENCODING UTF8 ] ] ])
行为与json_array相同,只是它作为一个聚合函数,因此只接受一个 value_expression参数。 现存
json_object_agg 1 json_object_agg ( key "any", value "any" ORDER BY input_sort_columns ) → json 171 次
将所有键/值对收集到一个JSON对象中。 现存
json_object_agg_strict 1 json_object_agg_strict ( key "any", value "any" ) → json
将所有键/值对收集到一个JSON对象中。 现存
json_object_agg_unique 1 json_object_agg_unique ( key "any", value "any" ) → json
将所有键/值对收集到一个JSON对象中。 现存
json_object_agg_unique_strict 1 json_object_agg_unique_strict ( key "any", value "any" ) → json
将所有键/值对收集到一个JSON对象中。 现存
json_objectagg 1 json_objectagg ( [ { key_expression { VALUE | ':' } value_expression } ] [ { NULL | ABSENT } ON NULL ] [ { WITH | WITHOUT } UNIQUE [ KEYS ] ] [ RETURNING data_type [ FORMAT JSON [ ENCODING UTF8 ] ] ])
行为与json_object相同,只是它作为一个聚合函数,因此只接受一个 key_expression参数和一个 value_expression参数。 现存
jsonb_agg 1 jsonb_agg ( anyelement ORDER BY input_sort_columns ) → jsonb 171 次
收集所有输入值,包括空值,到一个JSON数组。 现存
jsonb_agg_strict 1 jsonb_agg_strict ( anyelement ) → jsonb
收集所有输入值,跳过空值,到一个JSON数组。 现存
jsonb_object_agg 1 jsonb_object_agg ( key "any", value "any" ORDER BY input_sort_columns ) → jsonb 171 次
将所有键/值对收集到一个JSON对象中。 现存
jsonb_object_agg_strict 1 jsonb_object_agg_strict ( key "any", value "any" ) → jsonb
将所有键/值对收集到一个JSON对象中。 现存
jsonb_object_agg_unique 1 jsonb_object_agg_unique ( key "any", value "any" ) → jsonb
将所有键/值对收集到一个JSON对象中。 现存
jsonb_object_agg_unique_strict 1 jsonb_object_agg_unique_strict ( key "any", value "any" ) → jsonb
将所有键/值对收集到一个JSON对象中。 现存
max基线 1 max ( see text ) → same as input type
计算非空输入值的最大值。 现存
min基线 1 min ( see text ) → same as input type
计算非空输入值的最小值。 现存
mode 1 mode () WITHIN GROUP ( ORDER BY anyelement ) → anyelement
计算mode,即聚合参数最频繁的值(如果有多个相同频繁的值,第一个可以任意选择)。 现存
percent_rank基线 2 percent_rank ( args ) WITHIN GROUP ( ORDER BY sorted_args ) → double precision 9.41 次
计算假设行的相关排行,也就是(rank - 1) / (total rows - 1)。 现存
percentile_cont 4 percentile_cont ( fraction double precision ) WITHIN GROUP ( ORDER BY double precision ) → double precision
计算连续百分位点,该值对应于聚合参数值有序集合中的指定fraction。 现存
percentile_disc 2 percentile_disc ( fraction double precision ) WITHIN GROUP ( ORDER BY anyelement ) → anyelement
计算离散百分位数,即聚合参数值的有序集合中的第一个值,该值在排序中的位置等于或超过指定的fraction。 现存
range_agg 2 range_agg ( value anyrange ) → anymultirange 151 次
计算非空输入值的并集。 现存
range_intersect_agg 2 range_intersect_agg ( value anyrange ) → anyrange
计算非空输入值的交集。 现存
rank基线 2 rank ( args ) WITHIN GROUP ( ORDER BY sorted_args ) → bigint 9.41 次
计算假设行的排名,包括间隔,就是说在它的同等行组中第一行的行号。 现存
regr_avgx基线 1 regr_avgx ( Y double precision, X double precision ) → double precision
计算自变量的平均值,sum(X)/N. 现存
regr_avgy基线 1 regr_avgy ( Y double precision, X double precision ) → double precision
计算因变量的平均值,sum(Y)/N. 现存
regr_count基线 1 regr_count ( Y double precision, X double precision ) → bigint
计算两个输入都非空的行数。 现存
regr_intercept基线 1 regr_intercept ( Y double precision, X double precision ) → double precision
计算由(X,Y)对决定的最小二乘拟合的线性方程的Y-截距。 现存
regr_r2基线 1 regr_r2 ( Y double precision, X double precision ) → double precision
计算相关系数的平方。 现存
regr_slope基线 1 regr_slope ( Y double precision, X double precision ) → double precision
计算由(X, Y)对决定的最小二乘拟合的线性方程的斜率。 现存
regr_sxx基线 1 regr_sxx ( Y double precision, X double precision ) → double precision
计算自变量的“平方和” sum(X^2) - sum(X)^2/N. 现存
regr_sxy基线 1 regr_sxy ( Y double precision, X double precision ) → double precision
计算独立变量乘以因变量的“sum of products”, sum(X*Y) - sum(X) * sum(Y)/N. 现存
regr_syy基线 1 regr_syy ( Y double precision, X double precision ) → double precision
计算因变量的“平方和”, sum(Y^2) - sum(Y)^2/N. 现存
stddev基线 1 stddev ( numeric_type ) → double precision for real or double precision, otherwise numeric
这是stddev_samp的一个历史别称。 现存
stddev_pop基线 1 stddev_pop ( numeric_type ) → double precision for real or double precision, otherwise numeric
计算输入值的总体标准差。 现存
stddev_samp基线 1 stddev_samp ( numeric_type ) → double precision for real or double precision, otherwise numeric
计算输入值的样本标准差。 现存
string_agg基线 2 string_agg ( value text, delimiter text ) → text 172 次
将非 null 输入值连接成一个字符串。 现存
sum基线 8 sum ( smallint ) → bigint
计算非空输入值的总和。 现存
var_pop基线 1 var_pop ( numeric_type ) → double precision for real or double precision, otherwise numeric
计算输入值的总体方差(总体标准差的平方)。 现存
var_samp基线 1 var_samp ( numeric_type ) → double precision for real or double precision, otherwise numeric
计算输入值的样本方差(样本标准差的平方)。 现存
variance基线 1 variance ( numeric_type ) → double precision for real or double precision, otherwise numeric
这是 var_samp 的一个历史别称。 现存