【问题标题】: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
        相关资源
        最近更新 更多