mysql - MySQL 中的修剪均值计算

标签 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

任何人都可以帮助如何正确编写上面的函数,以便与 MySQL 一起使用?

最佳答案

这可不是个小任务,你需要用c/c++来写...


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

解决这个问题的方法可能是有一个表专用于这个函数...

  • 开始交易
  • 收拾 table
  • 插入您的样本数据
  • 查询 View /函数

(或类似的东西)

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

这一切都不太理想,抱歉。

关于mysql - MySQL 中的修剪均值计算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8908435/

相关文章:

php - 使用 PHP OO 类获取行

mysql - 如何使用单个id从数据库中的多个表中获取信息?

php - 如何将我的 json 数组发送到 mysql 数据库中的几行

sql - 在 PostgreSQL 中显示多列的每月总计

sql - 为什么在使用OVER(PARTITION BY x)时需要在GROUP BY中包含一个字段?

java - Jooq 如何区分或 countDistinct 多于一列

mysql - 更改mysql中的一个字段取决于另一字段

mysql - 大型 MySQL 表更新速度慢

sql - 将 CASE WHEN 与多个 When 一起使用只会产生 BOOLEAN 值

PHP/MySQL 从数据库中取出一个表,但从表中排除一个字段?