【问题标题】:Non aggregated average in MySQL?MySQL中的非聚合平均值?
【发布时间】:2012-02-26 13:45:41
【问题描述】:

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

假设示例:

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

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

【问题讨论】:

    标签: mysql average


    【解决方案1】:

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

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

    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)
    

    【讨论】:

      猜你喜欢
      • 2018-08-13
      • 2021-08-12
      • 2019-10-02
      • 1970-01-01
      • 1970-01-01
      • 2021-01-20
      • 2015-12-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多