假设一个这样的表:
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
定义为其他两列之和的功能?如果是这样:
答案 0 :(得分:3)
您要查找的内容通常称为“计算列”。
Postgres 9.6不支持该功能(Postgres 12-将于2019年第四季度发布-will)。
但是对于这样一个简单的总和,我不会费心存储多余的信息。
如果不想重复该表达式,请创建一个视图。
答案 1 :(得分:0)
我认为您想要的是一个视图。
CREATE VIEW table_with_sum AS
SELECT id, a, b, a + b as total FROM summedup;
然后您可以在视图中查询总和。
SELECT total FROM table_with_sum where id=5;
视图不存储每一行的总和,每次查询视图时都会计算total
列。如果您的目标是提高查询效率,那将无济于事。
还有另一种方法:将列添加到表中,并创建用于更新的触发器,并插入该列,以在每次修改一行时更新total
列。