1

我正在尝试创建在我的查询中替代 postgresql sum 函数的函数。

查询它自己 LOOONG 和类似的东西

SELECT .... sum(tax) as tax ... from (SUBQUERY) as bar group by id;

我想用我自己的函数替换这个 sum 函数,它通过税收计算改变最终值。

所以我创建了这样的 pgsql 函数:

DECLARE
  v double precision;
BEGIN
  IF val > 256 THEN
    v := 256;
  ELSE
    v := val;
  END IF;
  RETURN (v*0.21)/0.79;
END;

该函数使用双精度作为输入。但是,使用此功能会给我带来错误:

column "bar.tax" must appear in the GROUP BY clause or be used in an aggregate function

所以我尝试使用双精度 [] 作为函数的输入类型 - 在这种情况下,错误告诉我没有匹配名称和给定输入类型的 postgresql 函数。

那么有没有办法通过使用 pgsql 函数来替换我的查询中的 sum 函数 - 我不想更改查询的任何其他部分,除非我真的,真的,真的必须这样做。

4

1 回答 1

3

查看CREATE AGGREGATE以获取聚合函数。sum(LEAST(tax,256)*21/79)如果我没看错的话,在你的表达中你可以做一些事情。

于 2012-09-12T12:40:11.603 回答