↑↓ 选择 ↵ 打开 ⌫ 改范围 完整检索页

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

百科 / 函数百科 / 聚合函数

FUNCTION聚合函数

dense_rank

计算假设行的排名,没有空缺;此函数实际上对同等行组进行计数。

Computes the rank of the hypothetical row, without gaps; this function effectively counts peer groups.

聚合函数 引入 8.4 现存至 20 devel 2 条签名 1 次签名变更

分组
聚合函数
签名数
2 条
引入版本
8.4
状态
现存
签名变更
1 次
本版来源
英文原文

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

版本轨迹

相对 PostgreSQL 17 无变化。

说明

计算假设行的排名,没有空缺;此函数实际上对同等行组进行计数。
dense_rank ( args ) WITHIN GROUP ( ORDER BY sorted_args ) → bigint
计算假设行的排名,没有空缺;此函数实际上对同等行组进行计数。
dense_rank () → bigint
返回当前行的排名,没有空缺;此函数实际上对同等行组进行计数。

签名

PostgreSQL 18.7 里 dense_rank 的 2 条签名,按上游手册顺序排列。参数名用斜体,类型用弱化色, 之后是返回类型。中文说明来自同版本手册与审阅译文,悬停可查看每条说明的来源。

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

    计算假设行的排名,没有空缺;此函数实际上对同等行组进行计数。
  2. dense_rank () → bigint

    返回当前行的排名,没有空缺;此函数实际上对同等行组进行计数。

演化历史

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

  1. PostgreSQL 13 ← 12 手册重排

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

  2. PostgreSQL 9.4 ← 9.3 签名变更

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

  3. PostgreSQL 8.4 ← 8.3 新增此函数

    PostgreSQL 8.4 起可用

签名矩阵

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

存在 不存在

签名 8.49.09.19.29.39.49.59.61011121314151617181920
dense_rank ( ) → bigint 存在 存在 存在 存在 存在 存在 存在 存在 存在 存在 存在 不存在 不存在 不存在 不存在 不存在 不存在 不存在 不存在
dense_rank ( args ) WITHIN GROUP (ORDER BY sorted_args) → bigint 不存在 不存在 不存在 不存在 不存在 存在 存在 存在 存在 存在 存在 不存在 不存在 不存在 不存在 不存在 不存在 不存在 不存在
dense_rank ( args ) WITHIN GROUP ( ORDER BY sorted_args ) → bigint 不存在 不存在 不存在 不存在 不存在 不存在 不存在 不存在 不存在 不存在 不存在 存在 存在 存在 存在 存在 存在 存在 存在
dense_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 8.42 次
计算所有非空输入值的平均值(算术平均值)。 现存
bit_and 4 bit_and ( smallint ) → smallint —
计算所有非空输入值的按位与。 现存
bit_or 4 bit_or ( smallint ) → smallint —
计算所有非空输入值的按位或。 现存
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 7.32 次
计算输入行的数量。 现存
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 次
计算累积分布,也就是(位于假想行之前或与假想行同等的行数)/(总行数)。取值范围为 1/N 到 1。 现存
dense_rank 2 dense_rank ( args ) WITHIN GROUP ( ORDER BY sorted_args ) → bigint 9.41 次
计算假想行的排名,没有空缺;此函数实际上对同等行组进行计数。 现存
every 1 every ( boolean ) → boolean —
这是标准 SQL 中与 bool_and 等价的函数。 现存
GROUPING 1 GROUPING ( group_by_expression(s) ) → integer —
返回一个位掩码,指示哪些 GROUP BY 表达式未包含在当前分组集中。分配比特位时,最右侧参数对应最低有效位;如果相应表达式包含在生成当前结果行的分组集的分组条件中,该位为 0,否则为 1。 现存
json_agg 1 json_agg ( anyelement ORDER BY input_sort_columns ) → json 171 次
将所有输入值(包括空值)收集到一个 JSON 数组中。根据 to_json 或 to_jsonb 将值转换为 JSON。 现存
json_agg_strict 1 json_agg_strict ( anyelement ) → json —
将所有非空输入值收集到一个 JSON 数组中,跳过空值。根据 to_json 或 to_jsonb 将值转换为 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 参数。如果指定了 ABSENT ON NULL,则会省略所有 NULL 值。如果指定了 ORDER BY,元素将按该顺序出现在数组中,而不是按输入顺序。 现存
json_object_agg 1 json_object_agg ( key "any", value "any" ORDER BY input_sort_columns ) → json 171 次
将所有键/值对收集到一个 JSON 对象中。键参数强制转换为文本;值参数按照 to_json 或 to_jsonb 进行转换。值可以为空,但键不能(为空)。如果一个键出现多次,json 结果会保留每个键值对,而 jsonb 结果只保留该键的最后一个值。 现存
json_object_agg_strict 1 json_object_agg_strict ( key "any", value "any" ) → json —
将所有键/值对收集到一个 JSON 对象中。键参数强制转换为文本;值参数按照 to_json 或 to_jsonb 进行转换。key 不能为空。如果 value 为空,则跳过该键值对。移除所有值为空的键值对后,重复键的处理方式与 json_object_agg 和 jsonb_object_agg 相同。 现存
json_object_agg_unique 1 json_object_agg_unique ( key "any", value "any" ) → json —
将所有键/值对收集到一个 JSON 对象中。键参数强制转换为文本;值参数按照 to_json 或 to_jsonb 进行转换。值可以为空,但键不能为空。如果存在重复键,则会抛出错误。 现存
json_object_agg_unique_strict 1 json_object_agg_unique_strict ( key "any", value "any" ) → json —
将所有键/值对收集到一个 JSON 对象中。键参数强制转换为文本;值参数按照 to_json 或 to_jsonb 进行转换。key 不能为空。如果 value 为空,则跳过该键值对。如果存在重复键(包括值为空的键值对),则会抛出错误。 现存
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 数组中。根据 to_json 或 to_jsonb 将值转换为 JSON。 现存
jsonb_agg_strict 1 jsonb_agg_strict ( anyelement ) → jsonb —
将所有非空输入值收集到一个 JSON 数组中,跳过空值。根据 to_json 或 to_jsonb 将值转换为 JSON。 现存
jsonb_object_agg 1 jsonb_object_agg ( key "any", value "any" ORDER BY input_sort_columns ) → jsonb 171 次
将所有键/值对收集到一个 JSON 对象中。键参数强制转换为文本;值参数按照 to_json 或 to_jsonb 进行转换。值可以为空,但键不能(为空)。如果一个键出现多次,json 结果会保留每个键值对,而 jsonb 结果只保留该键的最后一个值。 现存
jsonb_object_agg_strict 1 jsonb_object_agg_strict ( key "any", value "any" ) → jsonb —
将所有键/值对收集到一个 JSON 对象中。键参数强制转换为文本;值参数按照 to_json 或 to_jsonb 进行转换。key 不能为空。如果 value 为空,则跳过该键值对。移除所有值为空的键值对后,重复键的处理方式与 json_object_agg 和 jsonb_object_agg 相同。 现存
jsonb_object_agg_unique 1 jsonb_object_agg_unique ( key "any", value "any" ) → jsonb —
将所有键/值对收集到一个 JSON 对象中。键参数强制转换为文本;值参数按照 to_json 或 to_jsonb 进行转换。值可以为空,但键不能为空。如果存在重复键,则会抛出错误。 现存
jsonb_object_agg_unique_strict 1 jsonb_object_agg_unique_strict ( key "any", value "any" ) → jsonb —
将所有键/值对收集到一个 JSON 对象中。键参数强制转换为文本;值参数按照 to_json 或 to_jsonb 进行转换。key 不能为空。如果 value 为空,则跳过该键值对。如果存在重复键(包括值为空的键值对),则会抛出错误。 现存
max基线 1 max ( see text ) → same as input type 7.32 次
计算非空输入值的最大值。适用于任何数字、字符串、日期/时间或枚举类型,以及 bytea、inet、interval、money、oid、oid8、pg_lsn、tid、uuid、xid8,以及包含可排序数据类型的数组和复合类型。 现存
min基线 1 min ( see text ) → same as input type 7.32 次
计算非空输入值的最小值。适用于任何数字、字符串、日期/时间或枚举类型,以及 bytea、inet、interval、money、oid、oid8、pg_lsn、tid、uuid、xid8,以及包含可排序数据类型的数组和复合类型。 现存
mode 1 mode () WITHIN GROUP ( ORDER BY anyelement ) → anyelement —
计算众数,即聚合参数中出现次数最多的值(若多个值的出现次数相同且最多,则任意选择其中第一个)。聚合参数必须是可排序类型。 现存
percent_rank 2 percent_rank ( args ) WITHIN GROUP ( ORDER BY sorted_args ) → double precision 9.41 次
计算假想行的相对排名,即(rank - 1)/(总行数 - 1)。取值范围为 0 到 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(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 7.32 次
这是 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 输入值连接成一个字符串。在第一个值之后,每个值前面都会放置相应的 delimiter(如果它不为 NULL)。 现存
sum基线 8 sum ( smallint ) → bigint 9.04 次
计算非空输入值的总和。 现存
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 7.32 次
这是 var_samp 的一个历史别名。 现存