首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >(聚合)函数可以用来定义列吗?

(聚合)函数可以用来定义列吗?
EN

Stack Overflow用户
提问于 2019-04-15 13:09:19
回答 2查看 27关注 0票数 0

假设这张桌子是这样的:

代码语言:javascript
运行
复制
a | b | total
--|---|------
1 | 2 |  3
4 | 7 | 11
…

CREATE TEMPORARY TABLE summedup (
    a double precision DEFAULT 0
  , b double precision DEFAULT 0
  --, total double precision
);
INSERT INTO summedup (a, b) VALUES (1, 2);
INSERT INTO summedup (a, b) VALUES (4, 7);

SELECT a, b, a + b as total FROM summedup;

很容易对SELECT上的前两列进行总结。

但是Postgres (9.6)也支持将total定义为其他两列之和的能力吗?如果是的话:

  • 语法是什么?
  • 这种类型的操作称为什么(聚合通常在多个行上总结单元格,而不是列)。
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-04-15 13:12:42

您要查找的内容通常称为“计算列”。

Postgres 9.6不支持这一点(Postgres 12 -将在Q4 2019年-将要中发布)。

如果没有这么简单的总和,我就不会费心存储多余的信息了。

如果不想重复该表达式,请创建一个视图。

票数 3
EN

Stack Overflow用户

发布于 2019-04-15 13:19:25

我认为你想要的是一个视图。

代码语言:javascript
运行
复制
CREATE VIEW table_with_sum AS 
 SELECT id, a, b, a + b as total FROM summedup;

然后,您可以查询视图中的和。

代码语言:javascript
运行
复制
SELECT total FROM table_with_sum where id=5;

视图不存储每一行的和,每次查询视图时都会计算total列。如果您的目标是提高查询的效率,这将于事无补。

还有另一种方法:将该列添加到表中,并创建用于更新的触发器,并在每次修改行时插入更新total列。

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

https://stackoverflow.com/questions/55689918

复制
相关文章

相似问题

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