我想知道是否有可能在Postgres中创建类似命名计算的东西?说,我有一张桌子:
create table foo (
bar smallint,
baz smallint
)
我可以运行select (bar / baz) * 100 from foo;
来获取我的结果,但我想要一个公式(伪代码):avg_foo ::= (bar/baz)*100
然后执行select avg_foo from foo;
以获得相同的结果。理想情况下,我想要一个单独的计算表:
create table calculations (
name varchar,
formula varchar
)
这样我就可以动态创建计算并在选择中使用它们,如下所示:
insert into calculations (name, formula) values
('sum_bar_baz', 'bar+baz'),
('mult_bar_baz', 'bar*baz');
select sum_bar_baz, mult_bar_baz from foo;
如何使用Postgres执行此操作?
答案 0 :(得分:1)
在plpgsql中编写一个元组返回函数,并从内部调用所需的函数。