mysql - MySQL 中的非聚合平均值?

标签 mysql average

有没有一种方法可以在不使用聚合函数的情况下计算子查询返回结果的平均值?

假设示例:

我想为每个帐户选择一个月内的平均最大发票。我希望能够做这样的事情:

SELECT
   accounts.*,
   **AVERAGE**(SELECT MAX(`amount`)
               FROM invoices
               WHERE invoices.account_id = accounts.id
               GROUP BY invoices.month) as `average_max`

最佳答案

根据定义,平均值是一个聚合函数,因为它需要对数据聚合进行操作。

为了得到你想要的,我会做:

SELECT
  accounts.*, avg_amount.amount AS avg_amount
FROM
  accounts
LEFT JOIN (
  SELECT account_id, AVG(amount) AS amount FROM (
    SELECT month, account_id, MAX(amount) AS amount FROM invoices GROUP BY month, account_id
  ) AS max_amount USING(account_id)
) AS avg_amount ON (accounts.id = avg_amount.account_ID)

关于mysql - MySQL 中的非聚合平均值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9453578/

相关文章:

javascript - 寻找颜色的平均值? - 十六进制字符串

php - 使用 SQL Result 进行第二次查询并通过 php 获取更多结果

php - mdb2 错误,准备语句中整数 = NULL

php - 如何使用 Laravel Eloquent 在不同服务器上的多个数据库之间执行连接查询?

python - 实现一个名为 Average 的类作为 List 的子类

audio - Windows Media编码器:如何在基于音频比特率的模式下设置平均比特率

python - 为什么这段代码会出现(在 python 上)?

mysql - 如何从多表条件求和查询中仅选择非零值

mysql - 无法创建表 `travel` .`city`(错误号 : 150 "Foreign key constraint is incorrectly formed")

javascript 获取输入的平均值