我想通过查询获取MS Access中多列的平均值

时间:2018-12-14 10:40:35

标签: ms-access

我在6列中拥有6个接触点的评分,并希望同时展示所有6列的平均值。示例数据图像如下:

数据格式示例:

所需结果应在第一个查询中按月分组,在第二个查询中按周分组:

所需结果:

我的月份列为文本,星期列为日期/时间

请帮助。

1 个答案:

答案 0 :(得分:0)

我的查询第一次无法正常工作,因为Access喜欢默认使用零,因此请确保您的表中有实际的空白值,或者平均值函数会认为零是一个观察值。然后打开查询设计器并输入如下内容: enter image description here 对于每周查询,右键单击变量以添加总计行,然后按周结束分组,然后选择平均值作为每个接触点的汇总函数。我更喜欢获取日期并将其转换为一周的最后一天。这是如何执行此操作的一个示例:

How to find the start date of week from a given date?

对于按月和年分组的月查询,并再次使用平均值函数: enter image description here 重要的部分是月份([周末])。其余的只是格式化。 如果将sql粘贴到设计器访问的sql视图中,通常可以对设计视图进行反向工程(在调整变量和表名之后): 每周查询sql: SELECT TouchPoints。[周末],Avg(TouchPoints.Point1)AS [触摸点1],Avg(TouchPoints.Point2)AS [触摸点2],Avg(TouchPoints.Point3)AS [触摸点3],Avg(TouchPoints) .Point4)AS [触摸点4],Avg(TouchPoints.Point5)AS [触摸点5],Avg(TouchPoints.Point6)AS [触摸点6] 从接触点 GROUP BY TouchPoints。[周末]; 每月查询sql: SELECT MonthName(Month([TouchPoints !! [Week Ending]))&“'&Year([TouchPoints !! [Week Ending])AS [Month],Avg(TouchPoints.Point1)AS [Touch Point 1],Avg (TouchPoints.Point2)AS [触摸点2],Avg(TouchPoints.Point3)AS [触摸点3],Avg(TouchPoints.Point4)AS [触摸点4],Avg(TouchPoints.Point5)AS [触摸点5] ,Avg(TouchPoints.Point6)AS [接触点6] 从接触点 GROUP BY MonthName(Month([TouchPoints !! [Week Ending]))&“'&Year([TouchPoints !! [Week Ending)),Year([TouchPoints !! [Week Ending]);