{"Entry":{"collection":"sql","key":"alter-aggregate","name":"ALTER AGGREGATE","aliases":["alteraggregate"],"metadata":{"aliases":["alteraggregate"],"changed_in":["8.0","8.1","8.2","9.2","9.4","9.5","14"],"changes":[{"from":"7.3","purpose_changed":false,"renamed":null,"sections":{"added":[],"changed":[],"removed":[]},"status":"added","synopsis":null,"to":"7.4"},{"from":"7.4","purpose_changed":false,"renamed":null,"sections":{"added":[],"changed":["description","parameters","examples"],"removed":[]},"status":"changed","synopsis":{"added":["ALTER AGGREGATE name ( type ) OWNER TO newowner"],"removed":[]},"to":"8.0"},{"from":"8.0","purpose_changed":false,"renamed":null,"sections":{"added":[],"changed":["description","parameters","examples"],"removed":[]},"status":"changed","synopsis":{"added":["ALTER AGGREGATE name ( type ) RENAME TO new_name","ALTER AGGREGATE name ( type ) OWNER TO new_owner","ALTER AGGREGATE name ( type ) SET SCHEMA new_schema"],"removed":["ALTER AGGREGATE name ( type ) RENAME TO newname","ALTER AGGREGATE name ( type ) OWNER TO newowner"]},"to":"8.1"},{"from":"8.1","purpose_changed":false,"renamed":null,"sections":{"added":[],"changed":["parameters"],"removed":[]},"status":"changed","synopsis":{"added":["ALTER AGGREGATE name ( type [ , ... ] ) RENAME TO new_name","ALTER AGGREGATE name ( type [ , ... ] ) OWNER TO new_owner","ALTER AGGREGATE name ( type [ , ... ] ) SET SCHEMA new_schema"],"removed":[]},"to":"8.2"},{"from":"9.1","purpose_changed":false,"renamed":null,"sections":{"added":[],"changed":["parameters"],"removed":[]},"status":"changed","synopsis":{"added":["ALTER AGGREGATE name ( argtype [ , ... ] ) RENAME TO new_name","ALTER AGGREGATE name ( argtype [ , ... ] ) OWNER TO new_owner","ALTER AGGREGATE name ( argtype [ , ... ] ) SET SCHEMA new_schema"],"removed":["ALTER AGGREGATE name ( type [ , ... ] ) RENAME TO new_name","ALTER AGGREGATE name ( type [ , ... ] ) OWNER TO new_owner","ALTER AGGREGATE name ( type [ , ... ] ) SET SCHEMA new_schema"]},"to":"9.2"},{"from":"9.3","purpose_changed":false,"renamed":null,"sections":{"added":["notes"],"changed":["parameters","examples"],"removed":[]},"status":"changed","synopsis":{"added":["ALTER AGGREGATE name ( aggregate_signature ) RENAME TO new_name","ALTER AGGREGATE name ( aggregate_signature ) OWNER TO new_owner","ALTER AGGREGATE name ( aggregate_signature ) SET SCHEMA new_schema","* |","[ argmode ] [ argname ] argtype [ , ... ] |","[ [ argmode ] [ argname ] argtype [ , ... ] ] ORDER BY [ argmode ] [ argname ] argtype [ , ... ]"],"removed":["ALTER AGGREGATE name ( argtype [ , ... ] ) RENAME TO new_name","ALTER AGGREGATE name ( argtype [ , ... ] ) OWNER TO new_owner","ALTER AGGREGATE name ( argtype [ , ... ] ) SET SCHEMA new_schema"]},"to":"9.4"},{"from":"9.4","purpose_changed":false,"renamed":null,"sections":{"added":[],"changed":[],"removed":[]},"status":"changed","synopsis":{"added":["OWNER TO { new_owner | CURRENT_USER | SESSION_USER }"],"removed":[]},"to":"9.5"},{"from":"13","purpose_changed":false,"renamed":null,"sections":{"added":[],"changed":[],"removed":[]},"status":"changed","synopsis":{"added":["OWNER TO { new_owner | CURRENT_ROLE | CURRENT_USER | SESSION_USER }"],"removed":[]},"to":"14"},{"from":"15","purpose_changed":false,"renamed":null,"sections":{"added":[],"changed":["description"],"removed":[]},"status":"changed","synopsis":null,"to":"16"},{"from":"18","purpose_changed":false,"renamed":null,"sections":{"added":[],"changed":["notes"],"removed":[]},"status":"changed","synopsis":null,"to":"19"}],"content_hash":"a5ce8b8e2a7c1afc8fb9ea0ee3c2dbbca18ae735d5aa33581a9bafd33e7cc839","editorial":{},"first_version":"7.4","group":"routine","imported_at":"2026-09-30T17:43:37.079682+08:00","last_version":"20","name":"ALTER AGGREGATE","object":"AGGREGATE","position":2003,"present_in":["7.4","8.0","8.1","8.2","8.3","8.4","9.0","9.1","9.2","9.3","9.4","9.5","9.6","10","11","12","13","14","15","16","17","18","19","20"],"purpose":"change the definition of an aggregate function","purpose_zh":"","related":["create-aggregate","drop-aggregate"],"slug":"alter-aggregate","source_rev":"a709ab85","synopsis":"ALTER AGGREGATE name ( aggregate_signature ) RENAME TO new_name\nALTER AGGREGATE name ( aggregate_signature )\nOWNER TO { new_owner | CURRENT_ROLE | CURRENT_USER | SESSION_USER }\nALTER AGGREGATE name ( aggregate_signature ) SET SCHEMA new_schema\nwhere aggregate_signature is:\n\n* |\n[ argmode ] [ argname ] argtype [ , ... ] |\n[ [ argmode ] [ argname ] argtype [ , ... ] ] ORDER BY [ argmode ] [ argname ] argtype [ , ... ]","verb":"ALTER"}},"Definition":{"Collection":"sql","Key":"alter-aggregate","SourceDatabase":"center","Version":"18","SourceTable":"sqlcmd","SourceKey":"alter-aggregate","SourceRevision":"a709ab85","Facts":{"anchor":"SQL-ALTERAGGREGATE","file":"sql-alteraggregate.html","lang":"en","name":"ALTER AGGREGATE","purpose":"change the definition of an aggregate function","purpose_zh":"","related":["create-aggregate","drop-aggregate"],"sections":[{"html":"\u003cp\u003e\u003ccode class=\"command\"\u003eALTER AGGREGATE\u003c/code\u003e changes the definition of an aggregate function.\u003c/p\u003e\u003cp\u003eYou must own the aggregate function to use \u003ccode class=\"command\"\u003eALTER AGGREGATE\u003c/code\u003e. To change the schema of an aggregate function, you must also have \u003ccode class=\"literal\"\u003eCREATE\u003c/code\u003e privilege on the new schema. To alter the owner, you must be able to \u003ccode class=\"literal\"\u003eSET ROLE\u003c/code\u003e to the new owning role, and that role must have \u003ccode class=\"literal\"\u003eCREATE\u003c/code\u003e privilege on the aggregate function's schema. (These restrictions enforce that altering the owner doesn't do anything you couldn't do by dropping and recreating the aggregate function. However, a superuser can alter ownership of any aggregate function anyway.)\u003c/p\u003e","key":"description","title":"Description"},{"html":"\u003cdiv class=\"variablelist\"\u003e\u003cdl class=\"variablelist\"\u003e\u003cdt\u003e\u003cspan class=\"term\"\u003e\u003cem class=\"replaceable\"\u003e\u003ccode\u003ename\u003c/code\u003e\u003c/em\u003e\u003c/span\u003e\u003c/dt\u003e\u003cdd\u003e\u003cp\u003eThe name (optionally schema-qualified) of an existing aggregate function.\u003c/p\u003e\u003c/dd\u003e\u003cdt\u003e\u003cspan class=\"term\"\u003e\u003cem class=\"replaceable\"\u003e\u003ccode\u003eargmode\u003c/code\u003e\u003c/em\u003e\u003c/span\u003e\u003c/dt\u003e\u003cdd\u003e\u003cp\u003eThe mode of an argument: \u003ccode class=\"literal\"\u003eIN\u003c/code\u003e or \u003ccode class=\"literal\"\u003eVARIADIC\u003c/code\u003e. If omitted, the default is \u003ccode class=\"literal\"\u003eIN\u003c/code\u003e.\u003c/p\u003e\u003c/dd\u003e\u003cdt\u003e\u003cspan class=\"term\"\u003e\u003cem class=\"replaceable\"\u003e\u003ccode\u003eargname\u003c/code\u003e\u003c/em\u003e\u003c/span\u003e\u003c/dt\u003e\u003cdd\u003e\u003cp\u003eThe name of an argument. Note that \u003ccode class=\"command\"\u003eALTER AGGREGATE\u003c/code\u003e does not actually pay any attention to argument names, since only the argument data types are needed to determine the aggregate function's identity.\u003c/p\u003e\u003c/dd\u003e\u003cdt\u003e\u003cspan class=\"term\"\u003e\u003cem class=\"replaceable\"\u003e\u003ccode\u003eargtype\u003c/code\u003e\u003c/em\u003e\u003c/span\u003e\u003c/dt\u003e\u003cdd\u003e\u003cp\u003eAn input data type on which the aggregate function operates. To reference a zero-argument aggregate function, write \u003ccode class=\"literal\"\u003e*\u003c/code\u003e in place of the list of argument specifications. To reference an ordered-set aggregate function, write \u003ccode class=\"literal\"\u003eORDER BY\u003c/code\u003e between the direct and aggregated argument specifications.\u003c/p\u003e\u003c/dd\u003e\u003cdt\u003e\u003cspan class=\"term\"\u003e\u003cem class=\"replaceable\"\u003e\u003ccode\u003enew_name\u003c/code\u003e\u003c/em\u003e\u003c/span\u003e\u003c/dt\u003e\u003cdd\u003e\u003cp\u003eThe new name of the aggregate function.\u003c/p\u003e\u003c/dd\u003e\u003cdt\u003e\u003cspan class=\"term\"\u003e\u003cem class=\"replaceable\"\u003e\u003ccode\u003enew_owner\u003c/code\u003e\u003c/em\u003e\u003c/span\u003e\u003c/dt\u003e\u003cdd\u003e\u003cp\u003eThe new owner of the aggregate function.\u003c/p\u003e\u003c/dd\u003e\u003cdt\u003e\u003cspan class=\"term\"\u003e\u003cem class=\"replaceable\"\u003e\u003ccode\u003enew_schema\u003c/code\u003e\u003c/em\u003e\u003c/span\u003e\u003c/dt\u003e\u003cdd\u003e\u003cp\u003eThe new schema for the aggregate function.\u003c/p\u003e\u003c/dd\u003e\u003c/dl\u003e\u003c/div\u003e","key":"parameters","title":"Parameters"},{"html":"\u003cp\u003eThe recommended syntax for referencing an ordered-set aggregate is to write \u003ccode class=\"literal\"\u003eORDER BY\u003c/code\u003e between the direct and aggregated argument specifications, in the same style as in \u003ca href=\"/docs/18/sql-createaggregate.html\" title=\"CREATE AGGREGATE\"\u003e\u003ccode class=\"command\"\u003eCREATE AGGREGATE\u003c/code\u003e\u003c/a\u003e. However, it will also work to omit \u003ccode class=\"literal\"\u003eORDER BY\u003c/code\u003e and just run the direct and aggregated argument specifications into a single list. In this abbreviated form, if \u003ccode class=\"literal\"\u003eVARIADIC \"any\"\u003c/code\u003e was used in both the direct and aggregated argument lists, write \u003ccode class=\"literal\"\u003eVARIADIC \"any\"\u003c/code\u003e only once.\u003c/p\u003e","key":"notes","title":"Notes"},{"html":"\u003cp\u003eTo rename the aggregate function \u003ccode class=\"literal\"\u003emyavg\u003c/code\u003e for type \u003ccode class=\"type\"\u003einteger\u003c/code\u003e to \u003ccode class=\"literal\"\u003emy_average\u003c/code\u003e:\u003c/p\u003e\u003cpre class=\"programlisting\"\u003eALTER AGGREGATE myavg(integer) RENAME TO my_average;\n\u003c/pre\u003e\u003cp\u003eTo change the owner of the aggregate function \u003ccode class=\"literal\"\u003emyavg\u003c/code\u003e for type \u003ccode class=\"type\"\u003einteger\u003c/code\u003e to \u003ccode class=\"literal\"\u003ejoe\u003c/code\u003e:\u003c/p\u003e\u003cpre class=\"programlisting\"\u003eALTER AGGREGATE myavg(integer) OWNER TO joe;\n\u003c/pre\u003e\u003cp\u003eTo move the ordered-set aggregate \u003ccode class=\"literal\"\u003emypercentile\u003c/code\u003e with direct argument of type \u003ccode class=\"type\"\u003efloat8\u003c/code\u003e and aggregated argument of type \u003ccode class=\"type\"\u003einteger\u003c/code\u003e into schema \u003ccode class=\"literal\"\u003emyschema\u003c/code\u003e:\u003c/p\u003e\u003cpre class=\"programlisting\"\u003eALTER AGGREGATE mypercentile(float8 ORDER BY integer) SET SCHEMA myschema;\n\u003c/pre\u003e\u003cp\u003eThis will work too:\u003c/p\u003e\u003cpre class=\"programlisting\"\u003eALTER AGGREGATE mypercentile(float8, integer) SET SCHEMA myschema;\n\u003c/pre\u003e","key":"examples","title":"Examples"},{"html":"\u003cp\u003eThere is no \u003ccode class=\"command\"\u003eALTER AGGREGATE\u003c/code\u003e statement in the SQL standard.\u003c/p\u003e","key":"compatibility","title":"Compatibility"},{"html":"\u003cspan class=\"simplelist\"\u003e\u003ca href=\"/wiki/sql/create-aggregate/?v=18\" title=\"CREATE AGGREGATE\"\u003e\u003cspan class=\"refentrytitle\"\u003eCREATE AGGREGATE\u003c/span\u003e\u003c/a\u003e, \u003ca href=\"/wiki/sql/drop-aggregate/?v=18\" title=\"DROP AGGREGATE\"\u003e\u003cspan class=\"refentrytitle\"\u003eDROP AGGREGATE\u003c/span\u003e\u003c/a\u003e\u003c/span\u003e","key":"see_also","title":"See Also"}],"sections_same_as":"","slug":"18","synopsis_html":"ALTER AGGREGATE \u003cem class=\"replaceable\"\u003e\u003ccode\u003ename\u003c/code\u003e\u003c/em\u003e ( \u003cem class=\"replaceable\"\u003e\u003ccode\u003eaggregate_signature\u003c/code\u003e\u003c/em\u003e ) RENAME TO \u003cem class=\"replaceable\"\u003e\u003ccode\u003enew_name\u003c/code\u003e\u003c/em\u003e\nALTER AGGREGATE \u003cem class=\"replaceable\"\u003e\u003ccode\u003ename\u003c/code\u003e\u003c/em\u003e ( \u003cem class=\"replaceable\"\u003e\u003ccode\u003eaggregate_signature\u003c/code\u003e\u003c/em\u003e )\n                OWNER TO { \u003cem class=\"replaceable\"\u003e\u003ccode\u003enew_owner\u003c/code\u003e\u003c/em\u003e | CURRENT_ROLE | CURRENT_USER | SESSION_USER }\nALTER AGGREGATE \u003cem class=\"replaceable\"\u003e\u003ccode\u003ename\u003c/code\u003e\u003c/em\u003e ( \u003cem class=\"replaceable\"\u003e\u003ccode\u003eaggregate_signature\u003c/code\u003e\u003c/em\u003e ) SET SCHEMA \u003cem class=\"replaceable\"\u003e\u003ccode\u003enew_schema\u003c/code\u003e\u003c/em\u003e\n\n\u003cspan class=\"phrase\"\u003ewhere \u003cem class=\"replaceable\"\u003e\u003ccode\u003eaggregate_signature\u003c/code\u003e\u003c/em\u003e is:\u003c/span\u003e\n\n* |\n[ \u003cem class=\"replaceable\"\u003e\u003ccode\u003eargmode\u003c/code\u003e\u003c/em\u003e ] [ \u003cem class=\"replaceable\"\u003e\u003ccode\u003eargname\u003c/code\u003e\u003c/em\u003e ] \u003cem class=\"replaceable\"\u003e\u003ccode\u003eargtype\u003c/code\u003e\u003c/em\u003e [ , ... ] |\n[ [ \u003cem class=\"replaceable\"\u003e\u003ccode\u003eargmode\u003c/code\u003e\u003c/em\u003e ] [ \u003cem class=\"replaceable\"\u003e\u003ccode\u003eargname\u003c/code\u003e\u003c/em\u003e ] \u003cem class=\"replaceable\"\u003e\u003ccode\u003eargtype\u003c/code\u003e\u003c/em\u003e [ , ... ] ] ORDER BY [ \u003cem class=\"replaceable\"\u003e\u003ccode\u003eargmode\u003c/code\u003e\u003c/em\u003e ] [ \u003cem class=\"replaceable\"\u003e\u003ccode\u003eargname\u003c/code\u003e\u003c/em\u003e ] \u003cem class=\"replaceable\"\u003e\u003ccode\u003eargtype\u003c/code\u003e\u003c/em\u003e [ , ... ]","synopsis_text":"ALTER AGGREGATE name ( aggregate_signature ) RENAME TO new_name\nALTER AGGREGATE name ( aggregate_signature )\nOWNER TO { new_owner | CURRENT_ROLE | CURRENT_USER | SESSION_USER }\nALTER AGGREGATE name ( aggregate_signature ) SET SCHEMA new_schema\nwhere aggregate_signature is:\n\n* |\n[ argmode ] [ argname ] argtype [ , ... ] |\n[ [ argmode ] [ argname ] argtype [ , ... ] ] ORDER BY [ argmode ] [ argname ] argtype [ , ... ]"},"ManualEvidence":{},"MeasuredEvidence":{}},"Text":{"Collection":"sql","Key":"alter-aggregate","SourceDatabase":"pgweb","Version":"18","Locale":"zh-Hans","Title":"ALTER AGGREGATE","Summary":"更改一个聚合函数的定义","BodyHTML":"\u003cpre\u003eALTER AGGREGATE name ( aggregate_signature ) RENAME TO new_name\nALTER AGGREGATE name ( aggregate_signature )\nOWNER TO { new_owner | CURRENT_ROLE | CURRENT_USER | SESSION_USER }\nALTER AGGREGATE name ( aggregate_signature ) SET SCHEMA new_schema\n其中 aggregate_signature 是：\n\n* |\n[ argmode ] [ argname ] argtype [ , ... ] |\n[ [ argmode ] [ argname ] argtype [ , ... ] ] ORDER BY [ argmode ] [ argname ] argtype [ , ... ]\u003c/pre\u003e\u003csection\u003e\u003ch2\u003e描述\u003c/h2\u003e\u003cp\u003e\u003ccode\u003eALTER AGGREGATE\u003c/code\u003e更改聚合函数的定义。\u003c/p\u003e\u003cp\u003e要使用\u003ccode\u003eALTER AGGREGATE\u003c/code\u003e，你必须拥有该聚合函数。要更改聚合函数的模式，你还必须在新模式上具有 \u003ccode\u003eCREATE\u003c/code\u003e权限。要更改拥有者，你必须能够对新的拥有角色执行 \u003ccode\u003eSET ROLE\u003c/code\u003e，并且该角色必须在该聚合函数所在模式上具有 \u003ccode\u003eCREATE\u003c/code\u003e权限。（这些限制确保更改拥有者不会做出任何你无法通过删除并重新创建该聚合函数来完成的事情。不过，超级用户无论如何都可以更改任何聚合函数的所有权。）\u003c/p\u003e\u003c/section\u003e\u003csection\u003e\u003ch2\u003e参数\u003c/h2\u003e\u003cdiv\u003e\u003cdl\u003e\u003cdt\u003e\u003cspan\u003e\u003cem\u003e\u003ccode\u003ename\u003c/code\u003e\u003c/em\u003e\u003c/span\u003e\u003c/dt\u003e\u003cdd\u003e\u003cp\u003e现有聚合函数的名称（可以用模式限定）。\u003c/p\u003e\u003c/dd\u003e\u003cdt\u003e\u003cspan\u003e\u003cem\u003e\u003ccode\u003eargmode\u003c/code\u003e\u003c/em\u003e\u003c/span\u003e\u003c/dt\u003e\u003cdd\u003e\u003cp\u003e参数的模式：\u003ccode\u003eIN\u003c/code\u003e或\u003ccode\u003eVARIADIC\u003c/code\u003e。如果省略，默认为\u003ccode\u003eIN\u003c/code\u003e。\u003c/p\u003e\u003c/dd\u003e\u003cdt\u003e\u003cspan\u003e\u003cem\u003e\u003ccode\u003eargname\u003c/code\u003e\u003c/em\u003e\u003c/span\u003e\u003c/dt\u003e\u003cdd\u003e\u003cp\u003e参数的名称。注意，\u003ccode\u003eALTER AGGREGATE\u003c/code\u003e 实际上并不关心参数名，因为确定聚合函数的标识只需要参数的数据类型。\u003c/p\u003e\u003c/dd\u003e\u003cdt\u003e\u003cspan\u003e\u003cem\u003e\u003ccode\u003eargtype\u003c/code\u003e\u003c/em\u003e\u003c/span\u003e\u003c/dt\u003e\u003cdd\u003e\u003cp\u003e聚合函数作用于其上的输入数据类型。要引用零参数聚合函数，请在参数说明列表的位置写上\u003ccode\u003e*\u003c/code\u003e。要引用有序集聚合函数，请在直接参数说明和聚合参数说明之间写上\u003ccode\u003eORDER BY\u003c/code\u003e。\u003c/p\u003e\u003c/dd\u003e\u003cdt\u003e\u003cspan\u003e\u003cem\u003e\u003ccode\u003enew_name\u003c/code\u003e\u003c/em\u003e\u003c/span\u003e\u003c/dt\u003e\u003cdd\u003e\u003cp\u003e聚合函数的新名称。\u003c/p\u003e\u003c/dd\u003e\u003cdt\u003e\u003cspan\u003e\u003cem\u003e\u003ccode\u003enew_owner\u003c/code\u003e\u003c/em\u003e\u003c/span\u003e\u003c/dt\u003e\u003cdd\u003e\u003cp\u003e聚合函数的新拥有者。\u003c/p\u003e\u003c/dd\u003e\u003cdt\u003e\u003cspan\u003e\u003cem\u003e\u003ccode\u003enew_schema\u003c/code\u003e\u003c/em\u003e\u003c/span\u003e\u003c/dt\u003e\u003cdd\u003e\u003cp\u003e聚合函数的新模式。\u003c/p\u003e\u003c/dd\u003e\u003c/dl\u003e\u003c/div\u003e\u003c/section\u003e\u003csection\u003e\u003ch2\u003e注解\u003c/h2\u003e\u003cp\u003e引用有序集聚合的推荐语法，是像\u003ca href=\"/docs/18/sql-createaggregate.html\" title=\"CREATE AGGREGATE\" rel=\"nofollow\"\u003e\u003ccode\u003eCREATE AGGREGATE\u003c/code\u003e\u003c/a\u003e 中那样，在直接参数说明和聚合参数说明之间写上\u003ccode\u003eORDER BY\u003c/code\u003e。不过，省略\u003ccode\u003eORDER BY\u003c/code\u003e，直接把两部分参数说明合并为一个列表也同样可行。在这种简写形式中，如果直接参数列表和聚合参数列表中都使用了\u003ccode\u003eVARIADIC \u0026#34;any\u0026#34;\u003c/code\u003e，则只需写一次\u003ccode\u003eVARIADIC \u0026#34;any\u0026#34;\u003c/code\u003e。\u003c/p\u003e\u003c/section\u003e\u003csection\u003e\u003ch2\u003e示例\u003c/h2\u003e\u003cp\u003e要把用于类型\u003ccode\u003einteger\u003c/code\u003e的聚合函数 \u003ccode\u003emyavg\u003c/code\u003e重命名为\u003ccode\u003emy_average\u003c/code\u003e：\u003c/p\u003e\u003cpre\u003eALTER AGGREGATE myavg(integer) RENAME TO my_average;\n\u003c/pre\u003e\u003cp\u003e要把用于类型\u003ccode\u003einteger\u003c/code\u003e的聚合函数 \u003ccode\u003emyavg\u003c/code\u003e的拥有者改为\u003ccode\u003ejoe\u003c/code\u003e：\u003c/p\u003e\u003cpre\u003eALTER AGGREGATE myavg(integer) OWNER TO joe;\n\u003c/pre\u003e\u003cp\u003e把直接参数类型为\u003ccode\u003efloat8\u003c/code\u003e、聚合参数类型为\u003ccode\u003einteger\u003c/code\u003e 的有序集聚合\u003ccode\u003emypercentile\u003c/code\u003e移动到模式\u003ccode\u003emyschema\u003c/code\u003e中：\u003c/p\u003e\u003cpre\u003eALTER AGGREGATE mypercentile(float8 ORDER BY integer) SET SCHEMA myschema;\n\u003c/pre\u003e\u003cp\u003e这也同样可行：\u003c/p\u003e\u003cpre\u003eALTER AGGREGATE mypercentile(float8, integer) SET SCHEMA myschema;\n\u003c/pre\u003e\u003c/section\u003e\u003csection\u003e\u003ch2\u003e兼容性\u003c/h2\u003e\u003cp\u003e在 SQL 标准中没有\u003ccode\u003eALTER AGGREGATE\u003c/code\u003e语句。\u003c/p\u003e\u003c/section\u003e\u003csection\u003e\u003ch2\u003e另见\u003c/h2\u003e\u003cspan\u003e\u003ca href=\"/wiki/sql/create-aggregate/?v=18\" title=\"CREATE AGGREGATE\" rel=\"nofollow\"\u003e\u003cspan\u003eCREATE AGGREGATE\u003c/span\u003e\u003c/a\u003e, \u003ca href=\"/wiki/sql/drop-aggregate/?v=18\" title=\"DROP AGGREGATE\" rel=\"nofollow\"\u003e\u003cspan\u003eDROP AGGREGATE\u003c/span\u003e\u003c/a\u003e\u003c/span\u003e\u003c/section\u003e","SourceRevision":"1b5ca64c","ContentHash":"7b7072341eb4ea31fc6956bb5d7b4c2932b8798e6eb1706ce4798d3e67a32f7f","Payload":{"purpose_zh":"更改一个聚合函数的定义","sections":[{"html":"\u003cp\u003e\u003ccode class=\"command\"\u003eALTER AGGREGATE\u003c/code\u003e更改聚合函数的定义。\u003c/p\u003e\u003cp\u003e要使用\u003ccode class=\"command\"\u003eALTER AGGREGATE\u003c/code\u003e，你必须拥有该聚合函数。要更改聚合函数的模式，你还必须在新模式上具有 \u003ccode class=\"literal\"\u003eCREATE\u003c/code\u003e权限。要更改拥有者，你必须能够对新的拥有角色执行 \u003ccode class=\"literal\"\u003eSET ROLE\u003c/code\u003e，并且该角色必须在该聚合函数所在模式上具有 \u003ccode class=\"literal\"\u003eCREATE\u003c/code\u003e权限。（这些限制确保更改拥有者不会做出任何你无法通过删除并重新创建该聚合函数来完成的事情。不过，超级用户无论如何都可以更改任何聚合函数的所有权。）\u003c/p\u003e","key":"description","title":"描述"},{"html":"\u003cdiv class=\"variablelist\"\u003e\u003cdl class=\"variablelist\"\u003e\u003cdt\u003e\u003cspan class=\"term\"\u003e\u003cem class=\"replaceable\"\u003e\u003ccode\u003ename\u003c/code\u003e\u003c/em\u003e\u003c/span\u003e\u003c/dt\u003e\u003cdd\u003e\u003cp\u003e现有聚合函数的名称（可以用模式限定）。\u003c/p\u003e\u003c/dd\u003e\u003cdt\u003e\u003cspan class=\"term\"\u003e\u003cem class=\"replaceable\"\u003e\u003ccode\u003eargmode\u003c/code\u003e\u003c/em\u003e\u003c/span\u003e\u003c/dt\u003e\u003cdd\u003e\u003cp\u003e参数的模式：\u003ccode class=\"literal\"\u003eIN\u003c/code\u003e或\u003ccode class=\"literal\"\u003eVARIADIC\u003c/code\u003e。如果省略，默认为\u003ccode class=\"literal\"\u003eIN\u003c/code\u003e。\u003c/p\u003e\u003c/dd\u003e\u003cdt\u003e\u003cspan class=\"term\"\u003e\u003cem class=\"replaceable\"\u003e\u003ccode\u003eargname\u003c/code\u003e\u003c/em\u003e\u003c/span\u003e\u003c/dt\u003e\u003cdd\u003e\u003cp\u003e参数的名称。注意，\u003ccode class=\"command\"\u003eALTER AGGREGATE\u003c/code\u003e 实际上并不关心参数名，因为确定聚合函数的标识只需要参数的数据类型。\u003c/p\u003e\u003c/dd\u003e\u003cdt\u003e\u003cspan class=\"term\"\u003e\u003cem class=\"replaceable\"\u003e\u003ccode\u003eargtype\u003c/code\u003e\u003c/em\u003e\u003c/span\u003e\u003c/dt\u003e\u003cdd\u003e\u003cp\u003e聚合函数作用于其上的输入数据类型。要引用零参数聚合函数，请在参数说明列表的位置写上\u003ccode class=\"literal\"\u003e*\u003c/code\u003e。要引用有序集聚合函数，请在直接参数说明和聚合参数说明之间写上\u003ccode class=\"literal\"\u003eORDER BY\u003c/code\u003e。\u003c/p\u003e\u003c/dd\u003e\u003cdt\u003e\u003cspan class=\"term\"\u003e\u003cem class=\"replaceable\"\u003e\u003ccode\u003enew_name\u003c/code\u003e\u003c/em\u003e\u003c/span\u003e\u003c/dt\u003e\u003cdd\u003e\u003cp\u003e聚合函数的新名称。\u003c/p\u003e\u003c/dd\u003e\u003cdt\u003e\u003cspan class=\"term\"\u003e\u003cem class=\"replaceable\"\u003e\u003ccode\u003enew_owner\u003c/code\u003e\u003c/em\u003e\u003c/span\u003e\u003c/dt\u003e\u003cdd\u003e\u003cp\u003e聚合函数的新拥有者。\u003c/p\u003e\u003c/dd\u003e\u003cdt\u003e\u003cspan class=\"term\"\u003e\u003cem class=\"replaceable\"\u003e\u003ccode\u003enew_schema\u003c/code\u003e\u003c/em\u003e\u003c/span\u003e\u003c/dt\u003e\u003cdd\u003e\u003cp\u003e聚合函数的新模式。\u003c/p\u003e\u003c/dd\u003e\u003c/dl\u003e\u003c/div\u003e","key":"parameters","title":"参数"},{"html":"\u003cp\u003e引用有序集聚合的推荐语法，是像\u003ca href=\"/docs/18/sql-createaggregate.html\" title=\"CREATE AGGREGATE\"\u003e\u003ccode class=\"command\"\u003eCREATE AGGREGATE\u003c/code\u003e\u003c/a\u003e 中那样，在直接参数说明和聚合参数说明之间写上\u003ccode class=\"literal\"\u003eORDER BY\u003c/code\u003e。不过，省略\u003ccode class=\"literal\"\u003eORDER BY\u003c/code\u003e，直接把两部分参数说明合并为一个列表也同样可行。在这种简写形式中，如果直接参数列表和聚合参数列表中都使用了\u003ccode class=\"literal\"\u003eVARIADIC \"any\"\u003c/code\u003e，则只需写一次\u003ccode class=\"literal\"\u003eVARIADIC \"any\"\u003c/code\u003e。\u003c/p\u003e","key":"notes","title":"注解"},{"html":"\u003cp\u003e要把用于类型\u003ccode class=\"type\"\u003einteger\u003c/code\u003e的聚合函数 \u003ccode class=\"literal\"\u003emyavg\u003c/code\u003e重命名为\u003ccode class=\"literal\"\u003emy_average\u003c/code\u003e：\u003c/p\u003e\u003cpre class=\"programlisting\"\u003eALTER AGGREGATE myavg(integer) RENAME TO my_average;\n\u003c/pre\u003e\u003cp\u003e要把用于类型\u003ccode class=\"type\"\u003einteger\u003c/code\u003e的聚合函数 \u003ccode class=\"literal\"\u003emyavg\u003c/code\u003e的拥有者改为\u003ccode class=\"literal\"\u003ejoe\u003c/code\u003e：\u003c/p\u003e\u003cpre class=\"programlisting\"\u003eALTER AGGREGATE myavg(integer) OWNER TO joe;\n\u003c/pre\u003e\u003cp\u003e把直接参数类型为\u003ccode class=\"type\"\u003efloat8\u003c/code\u003e、聚合参数类型为\u003ccode class=\"type\"\u003einteger\u003c/code\u003e 的有序集聚合\u003ccode class=\"literal\"\u003emypercentile\u003c/code\u003e移动到模式\u003ccode class=\"literal\"\u003emyschema\u003c/code\u003e中：\u003c/p\u003e\u003cpre class=\"programlisting\"\u003eALTER AGGREGATE mypercentile(float8 ORDER BY integer) SET SCHEMA myschema;\n\u003c/pre\u003e\u003cp\u003e这也同样可行：\u003c/p\u003e\u003cpre class=\"programlisting\"\u003eALTER AGGREGATE mypercentile(float8, integer) SET SCHEMA myschema;\n\u003c/pre\u003e","key":"examples","title":"示例"},{"html":"\u003cp\u003e在 SQL 标准中没有\u003ccode class=\"command\"\u003eALTER AGGREGATE\u003c/code\u003e语句。\u003c/p\u003e","key":"compatibility","title":"兼容性"},{"html":"\u003cspan class=\"simplelist\"\u003e\u003ca href=\"/wiki/sql/create-aggregate/?v=18\" title=\"CREATE AGGREGATE\"\u003e\u003cspan class=\"refentrytitle\"\u003eCREATE AGGREGATE\u003c/span\u003e\u003c/a\u003e, \u003ca href=\"/wiki/sql/drop-aggregate/?v=18\" title=\"DROP AGGREGATE\"\u003e\u003cspan class=\"refentrytitle\"\u003eDROP AGGREGATE\u003c/span\u003e\u003c/a\u003e\u003c/span\u003e","key":"see_also","title":"另见"}],"sections_same_as":"","synopsis_html":"ALTER AGGREGATE \u003cem class=\"replaceable\"\u003e\u003ccode\u003ename\u003c/code\u003e\u003c/em\u003e ( \u003cem class=\"replaceable\"\u003e\u003ccode\u003eaggregate_signature\u003c/code\u003e\u003c/em\u003e ) RENAME TO \u003cem class=\"replaceable\"\u003e\u003ccode\u003enew_name\u003c/code\u003e\u003c/em\u003e\nALTER AGGREGATE \u003cem class=\"replaceable\"\u003e\u003ccode\u003ename\u003c/code\u003e\u003c/em\u003e ( \u003cem class=\"replaceable\"\u003e\u003ccode\u003eaggregate_signature\u003c/code\u003e\u003c/em\u003e )\n                OWNER TO { \u003cem class=\"replaceable\"\u003e\u003ccode\u003enew_owner\u003c/code\u003e\u003c/em\u003e | CURRENT_ROLE | CURRENT_USER | SESSION_USER }\nALTER AGGREGATE \u003cem class=\"replaceable\"\u003e\u003ccode\u003ename\u003c/code\u003e\u003c/em\u003e ( \u003cem class=\"replaceable\"\u003e\u003ccode\u003eaggregate_signature\u003c/code\u003e\u003c/em\u003e ) SET SCHEMA \u003cem class=\"replaceable\"\u003e\u003ccode\u003enew_schema\u003c/code\u003e\u003c/em\u003e\n\n\u003cspan class=\"phrase\"\u003e其中 \u003cem class=\"replaceable\"\u003e\u003ccode\u003eaggregate_signature\u003c/code\u003e\u003c/em\u003e 是：\u003c/span\u003e\n\n* |\n[ \u003cem class=\"replaceable\"\u003e\u003ccode\u003eargmode\u003c/code\u003e\u003c/em\u003e ] [ \u003cem class=\"replaceable\"\u003e\u003ccode\u003eargname\u003c/code\u003e\u003c/em\u003e ] \u003cem class=\"replaceable\"\u003e\u003ccode\u003eargtype\u003c/code\u003e\u003c/em\u003e [ , ... ] |\n[ [ \u003cem class=\"replaceable\"\u003e\u003ccode\u003eargmode\u003c/code\u003e\u003c/em\u003e ] [ \u003cem class=\"replaceable\"\u003e\u003ccode\u003eargname\u003c/code\u003e\u003c/em\u003e ] \u003cem class=\"replaceable\"\u003e\u003ccode\u003eargtype\u003c/code\u003e\u003c/em\u003e [ , ... ] ] ORDER BY [ \u003cem class=\"replaceable\"\u003e\u003ccode\u003eargmode\u003c/code\u003e\u003c/em\u003e ] [ \u003cem class=\"replaceable\"\u003e\u003ccode\u003eargname\u003c/code\u003e\u003c/em\u003e ] \u003cem class=\"replaceable\"\u003e\u003ccode\u003eargtype\u003c/code\u003e\u003c/em\u003e [ , ... ]","synopsis_text":"ALTER AGGREGATE name ( aggregate_signature ) RENAME TO new_name\nALTER AGGREGATE name ( aggregate_signature )\nOWNER TO { new_owner | CURRENT_ROLE | CURRENT_USER | SESSION_USER }\nALTER AGGREGATE name ( aggregate_signature ) SET SCHEMA new_schema\n其中 aggregate_signature 是：\n\n* |\n[ argmode ] [ argname ] argtype [ , ... ] |\n[ [ argmode ] [ argname ] argtype [ , ... ] ] ORDER BY [ argmode ] [ argname ] argtype [ , ... ]"}},"RequestedLocale":"zh-Hans","Fallback":false,"Versions":["10","11","12","13","14","15","16","17","18","19","20","7.4","8.0","8.1","8.2","8.3","8.4","9.0","9.1","9.2","9.3","9.4","9.5","9.6"],"Locales":["en","zh-Hans"],"Signatures":null,"Spellings":null,"SQLState":null,"Evidence":null}
