修剪MySQL中的平均值

Hom*_*lli 5 mysql sql aggregate-functions

我想编写一个函数来计算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
Run Code Online (Sandbox Code Playgroud)

任何人都可以帮助如何正确编写上面的函数,用于MySQL?

Mat*_*lie 1

这不是一个小任务,你需要用 c/c++ 编写它......


MySQL 本身的一个选项是编写一个视图或标量函数,以您想要的方式聚合数据,但来自特定的表。这显然将功能限制在单个源表上,这可能并不理想。

解决这个问题的方法可能是有一个专门用于此功能的表......

  • 开始交易
  • 清桌子
  • 插入您的示例数据
  • 查询视图/函数

(或者类似的东西)

这排除了 GROUP BY 变化,除非您使用动态 sql 或将参数传递给函数以实现特定的分组模式。

一切都不太理想,抱歉。