MySQL函数-保存多次往返

时间:2018-10-15 11:47:32

标签: mysql hibernate stored-procedures

我在Mysql中有一个函数-定义看起来像

CREATE FUNCTION `compute_average`(roleId BIGINT, testType VARCHAR(255)) RETURNS double

SET @ct := (SELECT COUNT(1) FROM activiti
WHERE
  AND test_type = testType
  AND TIMESTAMPDIFF(SECOND, started_on, completed_on) <= 1209600
  AND role_id = roleId);

SET @row_id := 0;
SET @average := 0.0;

SELECT AVG(TIMESTAMPDIFF(SECOND, started_on, completed_on)) / 3600 AS median INTO @median
FROM activiti
WHERE completed_on IS NOT NULL
AND (SELECT @row_id := @row_id + 1)
    BETWEEN @ct/2.0 AND @ct/2.0 + 1
ORDER BY TIMESTAMPDIFF(SECOND, started_on, completed_on)
LIMIT 1;

RETURN @average;

该mysql函数应该根据testType计算所有角色的平均值。 (实际逻辑非常复杂,大约需要20行代码。它也进行一些计算。不仅仅是AVG)

我有20个testType参数,我从休眠代码中以原始查询为

调用此函数。
SELECT compute_average(?, ?);

现在,问题是,因为我有20种不同的测试类型,所以我会打20次电话。

我正在尝试保存这20次往返。最初我想到使用groupBy,但看来您无法从mysql函数返回元组。

还有其他方法可以实现吗?

0 个答案:

没有答案