【问题标题】:calculation in postgresql functionpostgresql函数中的计算
【发布时间】:2023-03-04 19:28:01
【问题描述】:

我正在尝试创建一个函数来替代我的查询中的 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 函数 - 我不想更改查询的任何其他部分,除非我真的、真的、真的必须这样做。

【问题讨论】:

    标签: postgresql plpgsql


    【解决方案1】:

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

    【讨论】:

    • 好的。谢谢。你甚至两次回答了我的问题,提供了一个替代方案。太棒了:)
    猜你喜欢
    • 2013-10-27
    • 1970-01-01
    • 2011-08-07
    • 2016-11-14
    • 1970-01-01
    • 2020-08-27
    • 1970-01-01
    • 2012-08-30
    • 2021-05-30
    相关资源
    最近更新 更多