【问题标题】:Average of multiple averages多个平均值的平均值
【发布时间】:2012-05-04 23:18:29
【问题描述】:

我正在运行一个 sql 查询,其中有一些平均值,现在我想要这些平均值的平均值,所以

AVG(q1) as q1,
AVG(q2) as q2,
AVG(q3) as q3,
AVG(q4) as q4,

然后我不知道如何获得所有平均值的平均值,因为我做不到 AVG(q1,q2,q3,q4) 和 AVG(q1+q2+q3+q4+q5) 不会返回所有行和列的总平均值,而只会返回平均值每一行。

【问题讨论】:

    标签: mysql sql


    【解决方案1】:

    最简单的方法是手动计算

    (AVG(q1) + AVG(q2) ... + AVG(qn))/(n*1.0)
    

    【讨论】:

    • 谢谢——我想到了这一点,但我只是想可能有某种方法可以重用我已经得到的值,而不是浪费处理能力——我猜没有。谢谢你的回答:)
    • 请注意,只有当每个 q 的数量相同时,以上才是数学上正确的。
    • @geoB 你说的数字是相同的意思是请告诉我.. 表示常规整数或任何其他
    • 最初的问题是“这些平均值的平均值”。这个解决方案是正确的。我认为 geoB 正在考虑某些变量但不是全部有 NULL 值的情况;但是,这与原始问题无关。
    • 我实际上在考虑这样一种情况:一个人取 100 项的平均值,然后取 3 项的平均值。 113 个项目的平均值不一定是两个值的平均值(一个是 100 个值的平均值,一个是 3 个)。但是,如果所有平均值具有相同的项目数,则它们的平均值将是整个集合的平均值。
    【解决方案2】:

    是的,您可以通过另一个 SELECT 来“重用”这些值

    SELECT a.*,(q1+q2+q3+q4)/n as avg_all FROM (
      SELECT AVG(q1) as q1,
             AVG(q2) as q2,
             AVG(q3) as q3,
             AVG(q4) as q4.... ) a
    

    【讨论】:

      猜你喜欢
      • 2017-02-06
      • 2022-11-03
      • 2022-11-22
      • 1970-01-01
      • 1970-01-01
      • 2014-08-22
      • 2015-09-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多