mysql函数-保存多次往返

ldioqlga  于 2021-06-20  发布在  Mysql
关注(0)|答案(0)|浏览(247)

我在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行代码。它也做了一些计算。不只是平均值)
我有20个testtype参数,我用原始查询从hibernate代码调用这个函数

SELECT compute_average(?, ?);

现在,问题是,因为我有20种不同的测试类型,所以我打了20次这个电话。
我正在努力挽救这20次往返。最初我考虑使用groupby,但似乎不能从mysql函数返回tuple。
有没有其他方法来实现这一点?

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题