FUNCTION聚合函数
json_object_agg
将所有键/值对收集到一个JSON对象中。
Collects all the key/value pairs into a JSON object.
聚合函数 引入 9.4 现存至 20 devel 1 条签名 1 次签名变更
- 分组
- 聚合函数
- 签名数
- 1 条
- 引入版本
- 9.4
- 状态
- 现存
- 签名变更
- 1 次
- 本版来源
- 本站译文
版本轨迹
相对 PostgreSQL 17 无变化。
签名
PostgreSQL 18 里 json_object_agg 的 1 条签名,按上游手册顺序排列。参数名用斜体,类型用弱化色, 之后是返回类型。说明取自本站手册译文:标「沿用」的借用了另一版的译文,标「EN」的本站暂无译文、按英文原文显示。
-
json_object_agg(key"any",value"any"ORDER BYinput_sort_columns) →json将所有键/值对收集到一个JSON对象中。关键参数强制转换为文本;值参数按照to_json或to_jsonb进行转换。 值可以为空,但键不能(为空)。
演化历史
相邻两个大版本之间的差异,新的在前。版本号链到该版的签名。
-
PostgreSQL 17 ← 16 签名变更
json_object_agg ( key "any", value "any" ORDER BY input_sort_columns ) → jsonjson_object_agg ( key "any", value "any" ) → json -
PostgreSQL 16 ← 15 说明更新
说明更新
-
PostgreSQL 13 ← 12 手册重排
这一跳手册重排了函数表的写法,签名文本整体改写,只记函数的增删,不逐条比较签名。
-
PostgreSQL 9.4 ← 9.3 新增此函数
PostgreSQL 9.4 起可用
签名矩阵
每条签名在给出了签名的 14 个版本里的存在情况;方格指向该版的签名。只在正文里提到此函数、没有给出签名的版本不列进来,上面的版本轨迹里仍然有它们。签名文本在 PostgreSQL 13 前后写法不同,跨越那一跳的同一条签名会显示成两行。
存在 不存在
| 签名 | 9.4 | 9.5 | 9.6 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
json_object_agg ( name, value ) → json |
存在 | 存在 | 存在 | 存在 | 存在 | 存在 | 不存在 | 不存在 | 不存在 | 不存在 | 不存在 | 不存在 | 不存在 | 不存在 |
json_object_agg ( key "any", value "any" ) → json |
不存在 | 不存在 | 不存在 | 不存在 | 不存在 | 不存在 | 存在 | 存在 | 存在 | 存在 | 不存在 | 不存在 | 不存在 | 不存在 |
json_object_agg ( key "any", value "any" ORDER BY input_sort_columns ) → json |
不存在 | 不存在 | 不存在 | 不存在 | 不存在 | 不存在 | 不存在 | 不存在 | 不存在 | 不存在 | 存在 | 存在 | 存在 | 存在 |
同组函数
| 函数 | 签名 | 主签名 | 版本变动 | 最近变更 |
|---|---|---|---|---|
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 的一个历史别称。 | 现存 | |||