Динамические расчетные формулы в Postgres - PullRequest
2 голосов
/ 15 марта 2011

Я хотел бы знать, есть ли возможность создавать что-то вроде именованных вычислений в 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?

1 Ответ

1 голос
/ 15 марта 2011

Напишите функцию возврата кортежа в plpgsql и вызовите необходимые функции изнутри.

...