同时计算最大值和总和

SHl MRJ

对于我的项目,我正在创建一些自定义的 faggregate 函数,用于应用差异隐私。到目前为止,我能够实现 MAX 和 MIN 函数,添加一些拉普拉斯噪声。我在使用 SUM_LAPLACE 聚合时遇到了问题。我的上限(灵敏度),应该是列中 MAX 值的绝对值。

如何同时计算最大值和总和,然后将两个输出值传递给函数?

CREATE OR REPLACE FUNCTION calculateSum(real,real,OUT real, OUT real) AS $$
DECLARE 
   sumValue real := 0;
       max_v real;
BEGIN
   IF $1 IS NULL THEN
    sumValue := sumValue + $2;
   ELSIF $2 IS NULL THEN
    sumValue := sumValue + $1;
   ELSIF $2 IS NULL AND $1 IS NULL THEN
    sumValue := sumValue;
   ELSE
    sumValue := $1 + $2;
   END IF;
       max_v = searchmaximumvalue($1,$2);
END;
$$ LANGUAGE plpgsql;

CREATE OR REPLACE FUNCTION addLaplacianNoiseSum(real) RETURNS real AS $$
DECLARE
    epsilon real := 1.2;
    sensivity real := (epsilon * 2) + ($1/2);
    laplaceDistribution real;
 BEGIN
 laplaceDistribution := sensivity / (epsilon);
 RETURN  $1 + laplaceDistribution;

 END;
 $$ LANGUAGE plpgsql;

CREATE AGGREGATE SUM_LAPLACE(real)
(
SFUNC = calculateSum,
STYPE = real,
FINALFUNC = addLaplacianNoiseSum
);

函数searchmaximumvalue($1,$2)工作正常。我想从第一个函数返回 sum 和 max_v 并将它们传递给下面的第二个函数。我怎样才能做到这一点?

超人

演示:数据库<>小提琴

您可以创建自己的返回类型:

CREATE TYPE my_type AS (sum real, max_v real);

这可以用于SFUNC

CREATE OR REPLACE FUNCTION calculateSum(my_type, real) RETURNS my_type  -- returns my_type
AS $$
DECLARE 
   sumValue real := 0;
   max_v real;
   output my_type; -- new variable of my_type
BEGIN
   /* A LOT OF CODE HERE */

   output.sum := sumValue;
   output.max_v := max_v;

   RETURN output;
END;
$$ LANGUAGE plpgsql;

当然,作为您的输入FINALFUNC

CREATE OR REPLACE FUNCTION addLaplacianNoiseSum(my_type) RETURNS real AS $$

在 内使用它FINALFUNC

$1.max_v
$1.sum

你的聚合看起来像

CREATE AGGREGATE SUM_LAPLACE(real) (
    SFUNC = calculateSum,
    STYPE = my_type,         -- return type == my_type
    FINALFUNC = addLaplacianNoiseSum
);

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

优雅地同时计算数字数组的最小值和最大值

来自分类Dev

合并两个表,同时对重复项应用汇总(最大值,最小值和总和)

来自分类Dev

valueForKeyPath可以计算总和的最大值吗?

来自分类Dev

分组的COUNT的总和,仅计算最大值并显示最大值

来自分类Dev

使用Streams同时计算总和和平方和

来自分类Dev

计算最大值

来自分类Dev

总和的 Tableau 最大值

来自分类Dev

如何计算R中不同时间序列长度上的最大值和最小值之间的差异?

来自分类Dev

当支付频率不同时计算年度金额的总和

来自分类Dev

在Java中计算最小值和最大值?

来自分类Dev

使用选择总和查询来查找总和的最大值和最小值

来自分类Dev

按组和时间“窗口”计算最大值

来自分类Dev

计算的熊猫列的最大值和0

来自分类Dev

计算逐行最大值

来自分类Dev

从用户获取浮点输入,直到输入负数,然后计算总和、平均值、最大值和最小值,不包括负数

来自分类Dev

在mysql中选择总和的最大值

来自分类Dev

MySQL选择最大值的总和

来自分类Dev

如何获得访问总和的最大值?

来自分类Dev

计数总和中的最大值

来自分类Dev

获取每个用户的最大值总和

来自分类Dev

选择总和 sqlite 的最大值

来自分类Dev

如何根据每个组(分组依据)的 2 个最大值计算总和?

来自分类Dev

与同时使用最小值和最大值相比,此函数同时检索最小值和最大值的速度快吗?

来自分类Dev

数组的总和,而忽略一个最小值和一个最大值

来自分类Dev

SQL Server:获取总和聚合的最大值和最小值

来自分类Dev

根据列的总和返回最小值和最大值

来自分类Dev

C ++ libstd同时计算sin和cos

来自分类Dev

同时计算最快的路线和一些点

来自分类Dev

同时按最大值和最小值排序时,哪一列优先?

Related 相关文章

  1. 1

    优雅地同时计算数字数组的最小值和最大值

  2. 2

    合并两个表,同时对重复项应用汇总(最大值,最小值和总和)

  3. 3

    valueForKeyPath可以计算总和的最大值吗?

  4. 4

    分组的COUNT的总和,仅计算最大值并显示最大值

  5. 5

    使用Streams同时计算总和和平方和

  6. 6

    计算最大值

  7. 7

    总和的 Tableau 最大值

  8. 8

    如何计算R中不同时间序列长度上的最大值和最小值之间的差异?

  9. 9

    当支付频率不同时计算年度金额的总和

  10. 10

    在Java中计算最小值和最大值?

  11. 11

    使用选择总和查询来查找总和的最大值和最小值

  12. 12

    按组和时间“窗口”计算最大值

  13. 13

    计算的熊猫列的最大值和0

  14. 14

    计算逐行最大值

  15. 15

    从用户获取浮点输入,直到输入负数,然后计算总和、平均值、最大值和最小值,不包括负数

  16. 16

    在mysql中选择总和的最大值

  17. 17

    MySQL选择最大值的总和

  18. 18

    如何获得访问总和的最大值?

  19. 19

    计数总和中的最大值

  20. 20

    获取每个用户的最大值总和

  21. 21

    选择总和 sqlite 的最大值

  22. 22

    如何根据每个组(分组依据)的 2 个最大值计算总和?

  23. 23

    与同时使用最小值和最大值相比,此函数同时检索最小值和最大值的速度快吗?

  24. 24

    数组的总和,而忽略一个最小值和一个最大值

  25. 25

    SQL Server:获取总和聚合的最大值和最小值

  26. 26

    根据列的总和返回最小值和最大值

  27. 27

    C ++ libstd同时计算sin和cos

  28. 28

    同时计算最快的路线和一些点

  29. 29

    同时按最大值和最小值排序时,哪一列优先?

热门标签

归档