Function 从ACCESS 2013中的多个列(字段)计算最大值、总和和平均值

Function 从ACCESS 2013中的多个列(字段)计算最大值、总和和平均值,function,max,aggregate,average,multiple-columns,Function,Max,Aggregate,Average,Multiple Columns,我在access中有下表: entity ratingA ratingB ratingC XYZ 0-100 0-100 0-100 ABC 0-100 0-100 0-100 我需要得到一个查询,以便对每个实体(字段:ratingA、ratingB、ratingC)的每3列执行一些简单的聚合函数(SUM、MAX、AVE),但内置函数一次只对一个字段执行此操作,而不是对多个字段/列执行此操作。我不知道它的实际代码,但这里有一些伪代码:

我在access中有下表:

    entity ratingA ratingB ratingC 
    XYZ     0-100   0-100   0-100
    ABC     0-100   0-100   0-100

我需要得到一个查询,以便对每个实体(字段:ratingA、ratingB、ratingC)的每3列执行一些简单的聚合函数(SUM、MAX、AVE),但内置函数一次只对一个字段执行此操作,而不是对多个字段/列执行此操作。

我不知道它的实际代码,但这里有一些伪代码:

SELECT RatingA+RatingB+RatingC/3 AS average
WHERE entity = XYZ
所有实体的分组依据:

SELECT RatingA+RatingB+RatingC/3 AS average
GROUP BY entity
更好的是:

TABLE
ENTITY     VALUE    RATINGTYPE
XYZ        7        A
XYZ        3        B
XYZ        5        C
ABC        4        A
ABC        4        D
如果您计划在将来扩展,那么您就有了infinte类型的数量

SELECT rating/count(rating) AS average
WHERE entity = XYZ
(AND TYPE = A) #If you want to sort by only one type.

这实际上不是我自己的解决方案,我在这里发现类似的mysql,并将其用于访问(因为没有函数ISNULL):


在按字段实体分组的新查询中,我将其作为计算字段。

要获得几个字段的平均值,您真正需要做的是首先,找出字段填充方式的组合。ex 3字段可按8种方式填写
1,0,0-0,1,0,-0,0,1-1,1,0,1-0,1,1-1,1,1-0,0其中0表示空字段如果所有字段都已填充,则可以强制和参数对字段求和并除以3。但是,如果只填充了2个或一个字段,则必须首先识别空字段,并且不要将其添加到计算中。例如,如果有两个空字段,则平均值=包含值的字段的值。如果两个字段已满,则平均值=两个字段之和除以两个ect的值。因此,您要做的是计算该记录中的空字段数,然后从平均字段数中减去空字段数。将字段相加并除以该值:)

谢谢,但据我所知,这将强制为每个实体键入单独的查询。是否有一种方法可以使所有实体都具有on查询?此解决方案不能解决空值的问题。这个解决方案可以,我认为最好的解决方案是有实体评级,然后有3行实体XYZ评级A、实体XYZ评级B、实体XYZ评级C。如果您计划扩展,那么评级类型的数量不是问题。编辑上面的解决方案。谢谢,我已经使用了将多个列展平为一列的方法,但是由于进一步的查询,您最终会得到上面列出的几个列。那么这是一个死角吗?现在的结构如何?为什么会有几个列?参见第二个解决方案它是对您的问题的更新吗?或者这样做为你的问题提供了答案?这为我的问题提供了解决方案(至少对最难的平均值来说),SUM根本不是问题。如果它是一个答案,那么如果你接受这个答案,这将有助于帮助其他寻找同类型问题的人。在这个社区,自我学习和自我回答是受欢迎的。
   (NZ(RatingA, 0) + NZ(RatingB, 0) + NZ(RatingC, 0)) /
   (IIF(ISNULL(RatingA), 0, 1) + IIF(ISNULL(RatingB), 0, 1) + IIF(ISNULL(RatingC), 0, 1))