首页 > 解决方案 > 根据不同参数查询平均值

问题描述

数据:

Project   Program    Month    Value

  1         aaa     1/1/20      25
  1         aaa     1/1/20      25
  2         aaa     1/1/20      25
  2         aaa     1/1/20      25
  1         bbb     1/1/20      25
  1         bbb     1/1/20      25
  1         bbb     1/2/20      25
  2         bbb     1/2/20      25
  2         bbb     1/2/20      25

期望的输出:

month   program   avg(based on the number of different projects)
1/1/20    aaa      100/2
1/1/20    bbb      50/1
1/2/20    bbb      75/2

我正在使用 MS-Access 创建一个查询,该查询根据月份和程序获取平均值。

平均值是同一日期的总价值除以该日期的不同项目数。

标签: sqlms-access

解决方案


在 Access SQL 中,您可能需要两个子查询:

SELECT 
    TableA.Month, 
    TableA.Program, 
    Sum(TableA.Value) As Total, 
    Projects, 
    Sum(TableA.Value)/Projects As Average
FROM 
    TableA
INNER JOIN
    (SELECT Month, Program, Count(*) As Projects
    FROM 
        (SELECT TableA.Month, TableA.Program, TableA.Project
        FROM TableA
        GROUP BY TableA.Month, TableA.Program, TableA.Project) As T2
    GROUP BY Month, Program) As T1
    ON T1.Month = TableA.Month And T1.Program = TableA.Program
GROUP BY TableA.Month, TableA.Program, Projects;

结果:

结果


推荐阅读