PHP/MySQL 基于数组内容的平均值

标签 php mysql arrays

我有以下数组:

array(
    a => 6.75,
    b => 5.45,
    c => 8.76,
    d => 7.76,
    e => 8.16,
    f => 2.76,
    g => 4.67,
    h => 9.01,
    i => 5.42,
)

我希望实现的是对前四分位进行平均

本质上,我需要按降序顺序对数组进行排序,然后计算最高四分位数(即 9(数组中元素的数量)x 25% = 2.25 向下舍入为 2,因此需要计算前两个数字的平均值)。

这就是我要找的人物。

我正在努力弄清楚如何实现这一目标,以及最好是在 PHP 中还是通过查询 MySQL 数据库来实现这一目标。

欢迎任何和所有建议、反馈和建议。

最佳答案

在 MySQL 中执行此操作会很困难,因为您不能直接使用变量 LIMIT

但是,当您只需要一小部分数据时,在那里执行此操作肯定比将所有数据传输到 PHP 更有效。

因此,考虑到这一点,尝试这个算法:

  • 从表格中选择 COUNT(*) 以获取行数
  • 将该行数除以 4,称之为 $quartile_count
  • 现在您需要一个嵌套查询:

    SELECT AVG(`column_name`)
    FROM (
        SELECT `column_name`
        FROM `table_name`
        ORDER BY `column_name` DESC
        LIMIT $quartile_count
    ) `tmp`
    

    这是因为 LIMIT 必须先应用,然后再应用聚合 AVG 函数。

关于PHP/MySQL 基于数组内容的平均值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24551333/

相关文章:

php - 如何在 Symfony 2 中实现跨多个表单的单个 CSRF token ?

mysql - 如何将大型数据集导入 mysql - 正确的方法?

php - 一对多查询

php - 多线终端进度指示器?

javascript - 在 <a href> 上运行 javascript 函数

javascript - html div 不显示其内容文本

mysql - 如何使用 hibernate.default_schema 和 hibernate.default_catalog

c - C中将数组和数组指针传递给函数的区别

java - 将字符串数组转换为 BigDecimal 数组

java - Java 中二维不规则数组的越界异常