【问题标题】:Average Multiple Fields Whilst Ignoring Blanks in Access 2016Access 2016 中忽略空白的平均多个字段
【发布时间】:2020-11-03 13:13:37
【问题描述】:

我正在尝试平均 Access 2016 中每条记录中的多个字段。我希望能够将查询导入 Excel 以进行进一步分析。

有些记录包含我想忽略的空白字段。我首先尝试使用在 Access 中工作但无法导入 Excel 的 Nz。

然后我尝试了以下方法:

SELECT Date, HomeTeam, AwayTeam, FTR, B365H, B365D, B365A, BWH, BWD, BWA, IWH, IWD, IWA, LBH, LBD, LBA, PSH, PSD, PSA, WHH, WHD, WHA, VCH, VCD, VCA, (iif(isnull(B365H))+ iif(isnull(BWH))+ iif(isnull(IWH))+ iif(isnull(LBH))+ iif(isnull(PSH))+ iif(isnull(WHH))+ iif(isnull(VCH)))/7 AS AvgHome
FROM [Bund]
GROUP BY Date, HomeTeam, AwayTeam, FTR, B365H, B365D, B365A, BWH, BWD, BWA, IWH, IWD, IWA, LBH, LBD, LBA, PSH, PSD, PSA, WHH, WHD, WHA, VCH, VCD, VCA;

但得到“查询表达式中函数使用的参数数量错误”错误。

谁能看出问题出在哪里?

谢谢

【问题讨论】:

  • 您的 IIF() 函数参数未提供 TRUE 和 FALSE 条件。
  • 如果isnull(B365H) 是真的,如果是flase,会有什么价值?
  • 可以使用 Nz() 函数。 Nz(WHH,0)
  • 嗨 Haurn,如果该字段为空白,则不应将其包含在平均计算中,如果它包含一个数字(它只会包含一个数字或空白),则应使用该数字。跨度>
  • 嗨,六月,我无法将查询导入 Excel,因为 Excel 无法识别 Nz。

标签: sql ms-access ms-access-2016


【解决方案1】:

你可以使用Is Not Null:

Abs((B365H Is Not Null) + (BWH Is Not Null) + (IWH Is Not Null) + (LBH Is Not Null) + (PSH Is Not Null) + (WHH Is Not Null) + (VCH Is Not Null)) / 7

【讨论】:

    【解决方案2】:

    试试下面

    SELECT Date, HomeTeam, AwayTeam, FTR, B365H, B365D, B365A, BWH, BWD, BWA, IWH, IWD, IWA, LBH, LBD, LBA, PSH, PSD, PSA, WHH, WHD, WHA, VCH, VCD, VCA, (Nz(B365H,0)+ Nz(BWH,0)+ Nz(IWH,0)+ Nz(LBH,0)+ Nz(PSH,0)+ Nz(WHH,0)+ Nz(VCH,0))/7 AS AvgHome
    FROM [Bund]
    GROUP BY Date, HomeTeam, AwayTeam, FTR, B365H, B365D, B365A, BWH, BWD, BWA, IWH, IWD, IWA, LBH, LBD, LBA, PSH, PSD, PSA, WHH, WHD, WHA, VCH, VCD, VCA;
    

    【讨论】:

      【解决方案3】:

      您没有使用聚合函数,所以select distinct 更简单。

      那么,如果你想把NULL的值当作0,你可以使用nz():

      SELECT DISTINCT Date, HomeTeam, AwayTeam, FTR, B365H, B365D, B365A, BWH, BWD, BWA,
             IWH, IWD, IWA, LBH, LBD, LBA, PSH, PSD, PSA, WHH, WHD, WHA, VCH, VCD, VCA,
             (nz(B365H, 0) + nz(BWH, 0) + nz(IWH, 0) + nz(LBH, 0) + nz(PSH, 0) + nz(WHH, 0) + nz(VCH, 0))/7 AS AvgHome
      FROM [Bund];
      

      如果您想忽略 NULL 值,那么您还需要处理分母:

      SELECT DISTINCT Date, HomeTeam, AwayTeam, FTR, B365H, B365D, B365A, BWH, BWD, BWA,
             IWH, IWD, IWA, LBH, LBD, LBA, PSH, PSD, PSA, WHH, WHD, WHA, VCH, VCD, VCA,
             (nz(B365H, 0) + nz(BWH, 0) + nz(IWH, 0) + nz(LBH, 0) + nz(PSH, 0) + nz(WHH, 0) + nz(VCH, 0)) /
              (iif(B365H is null, 0, 1) + iif(BWH is null, 0, 1) + iif(IWH is null, 0, 1) + iif(LBH is null, 0, 1) + iif(PSH is null, 0, 1) + iif(WHH is null, 0, 1) + iif(VCH is null, 0, 1))
             )  AS AvgHome
      FROM [Bund];
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多