我想编写一个函数来计算 MySQL 中的简单截尾均值计算。该函数(显然)将是一个聚合函数。我不熟悉在 MySQL 中编写函数等,所以需要一些帮助。
修剪均值的算法如下(伪代码):
CREATE AGGREGATE FUNCTION trimmed_mean(elements DOUBLE[], trim_size INTEGER)
RETURNS DOUBLE
BEGIN
-- determine number of elements
-- ensure that number of elements is greater than 2 * trim_size else return error
-- order elements in ASC order
-- chop off smallest trim_size elements and largest trim_size elements
-- calculate arithmetic average of the remaining elements
-- return arithmetic average
END
任何人都可以帮助如何正确编写上面的函数,以便与 MySQL 一起使用?
最佳答案
这可不是个小任务,你需要用c/c++来写...
MySQL 本身的一个选项是编写一个 View 或标量函数,以您想要的方式聚合数据,但来自特定的表。这显然将功能限制在单个源表上,这可能并不理想。
解决这个问题的方法可能是有一个表专用于这个函数...
- 开始交易
- 收拾 table
- 插入您的样本数据
- 查询 View /函数
(或类似的东西)
这排除了 GROUP BY 变体,除非您使用动态 sql 或将参数传递给您的函数以实现特定的分组模式。
这一切都不太理想,抱歉。
关于mysql - MySQL 中的修剪均值计算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8908435/