代码之家  ›  专栏  ›  技术社区  ›  MarioS

总平均值,忽略分组依据

  •  1
  • MarioS  · 技术社区  · 6 年前

    我在Microsoft Access中创建了一个查询,如下所示:

    SELECT LoanType
    ,Avg(Loan Amount)
    ,Avg(Loan Rate)
    
    FROM Table1
    GROUP BY LoanType
    

    正如您所期望的,输出是每种贷款类型的平均贷款金额和平均贷款利率。

    但是,我想让我的访问报告计算所有贷款的平均值,不管贷款类型如何,并将这一行放在最下面。使用access中的report视图,可以添加一个“totals”行,在其中可以编写count()、sum()、avg()等公式。但正如你所知,计算一个平均数的平均数与基础数学相悖。

    我假设我必须在SQL/Query级别创建这个“Totals”行但我好像想不出来。如有任何意见,将不胜感激!

    2 回复  |  直到 6 年前
        1
  •  4
  •   sticky bit    6 年前

    你可以用 UNION ALL 要添加具有类似查询的行,只需不使用 GROUP BY 以及 NULL LoanType (或任何其他您喜欢的值,只要它可以隐式地转换为 贷款 ).

    SELECT LoanType,
           Avg(Loan Amount)
           Avg(Loan Rate)
           FROM Table1
           GROUP BY LoanType
    UNION ALL
    SELECT NULL,
           Avg(Loan Amount)
           Avg(Loan Rate)
           FROM Table1;
    
        2
  •  1
  •   Wolfgang Kais    6 年前

    您可以按照所描述的那样做:生成一个按loantype计算平均值的查询,在此查询上生成一个报表,并在报表页脚中计算平均值。不幸的是,这个“总平均数”将是平均数的平均数,但我想你想要的是所有记录的平均数。要做到这一点:

    • 你的报告以表1为基础。
    • 创建要按loantype分组的组。
    • 按组页脚中的loantype计算平均值。
    • 如果不想查看详细信息,请将“详细信息”部分设置为不可见。
    • 计算报表页脚中的“总平均值”。