2011-03-15 6 views
2

Postgres에서 명명 된 계산과 같은 것을 만들 수 있는지 알고 싶습니다. 내 결과를 얻을 수 select (bar/baz) * 100 from foo;를 실행할 수 있습니다,하지만 난 식 (의사)가 싶습니다Postgres의 동적 계산 공식

create table foo (
    bar smallint, 
    baz smallint 
) 

: 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; 

을 나는이 작업을 수행하려면 어떻게 포스트그레스?

답변

1

plpgsql에서 튜플 반환 함수를 작성하고 내부에서 필요한 함수를 호출하십시오.

+1

다니엘, 답변 해 주셔서 감사합니다. 조금 더 구체적 일 수 있습니까? 나는 네가 한 말을 어떻게 할 지 모르겠다. –

+0

포스트 그레스에서 함수를 작성하는 방법을 배웁니다. plpgsql 함수를 작성하는 방법을 배웁니다. EXECUTE 문에 대해 읽어보십시오. 문자열을 취하여 구문 분석하고 평가합니다. 그것을 사용하여 동적 쿼리를 만듭니다. 단일 값 대신 튜플을 반환하는 방법을 배웁니다. 문서를 읽으십시오. – Daniel