首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >PostgreSQL中聚合与功能的差异

PostgreSQL中聚合与功能的差异
EN

Stack Overflow用户
提问于 2022-07-07 06:01:44
回答 3查看 86关注 0票数 0

在PostgreSQL中,聚合和函数之间有什么区别?

聚合只是一种专门的功能吗?(聚合约束:参数必须是多集,返回值必须是单个值)

在可能出现聚合的地方,我可以在任何地方使用函数吗?

在使用PostgreSQL函数或聚合时,有什么特殊之处吗?

EN

回答 3

Stack Overflow用户

发布于 2022-07-07 06:58:12

聚合是函数的子集。

每个聚合也是一个函数(输入参数为array/set of values类型,输出为single scalar value类型)

您可以用任何其他聚合替换每个聚合--并得到不同的结果--但是如果用不聚合输入值的函数替换它,则可能会出现错误。

这个特性来自定义--聚合获取一个列表,对其值执行一些计算,并产生一个结果(这显然不是一个列表)。其他函数可能不适用于列表输入--例如,更低、更高、更小,等等。

票数 1
EN

Stack Overflow用户

发布于 2022-07-08 04:00:05

差异取决于视角。内部聚合函数被执行为重复调用“累积”函数(读取值并更新状态累积值)和“最终”函数(将累积值转换为最终结果)。从用户的角度来看,聚合函数也是函数,但目的和用法不同。聚合函数和标量函数是不可替换的。不能在应该使用聚合函数的地方使用标量函数,也不能使用聚合函数,因为应该使用标量函数。聚合函数跨行计算,标量函数仅计算每一行。聚合函数和标量函数的语法是相同的,但是其他的都有很大的不同。

票数 0
EN

Stack Overflow用户

发布于 2022-07-08 05:29:35

是的,聚合函数是专门的。考虑几乎任何SQL文档,在大多数(希望是所有文档)中,您都会找到包含多种函数类型的函数的引用。其中一个类型是“聚合函数”。从示例列表中:

代码语言:javascript
运行
复制
Chapter 9. Functions and Operators
Table of Contents

9.1. Logical Operators
9.2. Comparison Functions and Operators
9.3. Mathematical Functions and Operators
9.4. String Functions and Operators
9.5. Binary String Functions and Operators
9.6. Bit String Functions and Operators
9.7. Pattern Matching
9.8. Data Type Formatting Functions
9.9. Date/Time Functions and Operators
...
9.21. Aggregate Functions

(摘录于PostgreSQL 14)参见函数聚合函数 (当前版本链接)

您可以用一个聚合函数代替另一个聚合函数,例如,您可以使用MIN(column1)交换MAX(column1),而不会导致语法错误--但显然结果可能非常不同。但是,不可能仅仅用任何函数来代替聚合。

“在可能出现聚合的地方,我可以在任何地方使用函数吗?”

从这个意义上说,您可以“交换”任何函数(正如已经讨论过的那样),但是可以在group by查询中包括非聚合函数,例如:

代码语言:javascript
运行
复制
select date_trunc('month', datecolumn), sum(quantity)
from table1
group by date_trunc('month', datecolumn)

“在使用PostgreSQL函数或聚合时,有什么特殊之处吗?”

是和不。完全符合SQL标准的函数(例如MIN/MAX/SUM/COUNT)就是“符合标准”的函数。然而,在其他数据库管理系统(如jsonb_object_agg() )中确实存在更多的外来函数。使用文档来探索许多可用的函数。

一个非常有用的专门化Postgres函数(它返回一个“集”)是generate_series()。

代码语言:javascript
运行
复制
generate_series ( start timestamp, stop timestamp, step interval )

请参阅:9.25。集合返回函数

注意:函数也可以是“用户定义的”(即由用户构建的)。因此,您可以使用的全部功能列表也可能包括其中的一些功能,这些功能将是“高度专业化的”,因为它们可能是您的组织所特有的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72892937

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档