pg_aggregate
目录pg_aggregate
存储关于聚集函数的信息。聚集函数是对一个数值集合(典型的是每个匹配查询条件的行中的同一个列的值) 进行操作的函数,它返回从这些值中计算出的一个数值。 典型的聚集函数是 sum
、count
和max
。pg_aggregate
里的每个项都是一个pg_proc
项的扩展。pg_proc
项记载该聚集的名字、输入和输出数据类型,以及其他一些和普通函数类似的信息。
表 51.2. pg_aggregate
的列
名称 | 类型 | 引用 | 描述 |
---|---|---|---|
aggfnoid | regproc |
| 聚集函数在pg_proc 中的OID |
aggkind | char | 聚集类型:
n 表示“普通”聚集,
o 表示“有序集”聚集,或者
h 表示“假想集”聚集
| |
aggnumdirectargs | int2 | 一个有序集或者假想集聚集的直接(非聚集)参数的数量,一个可变数组算作一个参数。
如果等于pronargs ,该聚集必定是可变的并且该可变数组描述聚集参数以
及最终直接参数。对于普通聚集总是为零。 | |
aggtransfn | regproc |
| 转移函数 |
aggfinalfn | regproc |
| 最终函数(如果没有就为零) |
aggcombinefn | regproc |
| 结合函数(如果没有就为零) |
aggserialfn | regproc |
| 序列化函数(如果没有就为零) |
aggdeserialfn | regproc |
| 反序列化函数(如果没有就为零) |
aggmtransfn | regproc |
| 用于移动聚集模式的向前转移函数(如果没有就为零) |
aggminvtransfn | regproc |
| 用于移动聚集模式的反向转移函数(如果没有就为零) |
aggmfinalfn | regproc |
| 用于移动聚集模式的最终函数(如果没有就为零) |
aggfinalextra | bool | 为真则向
aggfinalfn 传递额外的哑参数 | |
aggmfinalextra | bool | 为真则向
aggmfinalfn 传递额外的哑参数 | |
aggfinalmodify | char | aggfinalfn 是否修改传递状态值:
如果是只读则为r ,
如果不能在aggfinalfn 之后应用aggtransfn 则为s ,
如果它修改该值则为w
| |
aggmfinalmodify | char | 和aggfinalmodify 类似,但是用于aggmfinalfn
| |
aggsortop | oid |
| 相关联的排序操作符(如果没有则为0) |
aggtranstype | oid |
| 聚集函数的内部转移(状态)数据的数据类型 |
aggtransspace | int4 | 转移状态数据的近似平均尺寸(字节),或者为零表示使用一个默认估算值 | |
aggmtranstype | oid |
| 聚集函数用于移动聚集欧氏的内部转移(状态)数据的数据类型(如果没有则为零) |
aggmtransspace | int4 | 转移状态数据的近似平均尺寸(字节),或者为零表示使用一个默认估算值 | |
agginitval | text | 转移状态的初始值。这是一个文本域,它包含初始值的外部字符串表现形式。如果这个域为空,则转移状态值从空值开始。 | |
aggminitval | text | 用于移动聚集模式的转移状态初值。这是一个文本域,它包含了以其文本字符串形式表达的初值。 如果这个域为空,则转移状态值从空值开始。 |
新的聚集函数可通过CREATE AGGREGATE命令注册。更多关于编写聚集函数以及转移函数的含义等信息请参见第 37.12 节。