您可以 CREATE AGGREGATE 语句创建您自己的聚集表达式,然后在您可调用内建的聚集的任何地方调用这些聚集。
使用 DISTINCT 或 UNIQUE 关键字来指定仅将用户定义的聚集应用于命名的列或表达式中唯一的值。使用 ALL 关键字来指定将该聚集应用于命名的列或表达式中所有的值。
如果您省略 DISTINCT、UNIQUE 和 ALL 关键字,则缺省值为 ALL。要获取关于 DISTINCT、UNIQUE 和 ALL 关键字的更多信息,请参阅 包括或排除结果集中的重复值。
当您指定设置表达式时,将此值传递到 INIT 支持函数,在 CREATE AGGREGATE 语句中为用户定义的聚集定义了该支持函数。
SELECT my_avg(quantity) FROM items
SELECT my_sum(DISTINCT quantity, 5) FROM items
SELECT my_max(remote.quantity) FROM rdb@rserv:items remote
如果将 my_max 聚集定义为 EXECUTEANYWHERE,则可将该分布式查询推送到远程数据库服务器 rserv 来执行。如果未将 my_max 聚集定义为 EXECUTEANYWHERE,则该分布式查询扫描远程 items 表,并在本地数据库服务器上计算 my_max 聚集。
SELECT rdb@rserv:my_max(remote.quantity) FROM rdb@rserv:items remote
要获取关于用户定义的聚集的更多信息,请参阅 CREATE AGGREGATE 语句 以及 GBase 8s 用户定义的例程和数据类型开发者指南 中对用户定义的聚集的讨论。