只有当一个记录符合条件时,MS Access才能获得平均值
问题描述:
在MS Access中,我试图获取数据的平均值,但只有当每个集合的最后一个记录大于某个值时。几乎有它,但不能得到最后一部分。所以,我的数据看起来像这样:只有当一个记录符合条件时,MS Access才能获得平均值
CarID WeekOf NumDataPoints Fuel
3AA May-14-2011 4 300
7BB May-14-2011 9 250
3AA May-21-2011 35 310
7BB May-21-2011 7 275
3AA May-28-2011 24 355
7BB May-28-2011 4 280
我的记录应包括燃料的平均只有那些具有目前点数汽车> = 5,所以本周是五月-28-2011和唯一的点数> 5的车是3AA车。其他几周的点数不重要。我试图
SELECT CarId, Avg(Fuel) AS AvgF
FROM tblCars
WHERE WeekOf>=#5/14/2011# And WeekOf<=#5/28/2011# AND
CarId = (SELECT CarId FROM tblCars
WHERE WeekOf=#5/28/2011# AND NumDataPoints>=5)
GROUP BY CarId;
我应该回去
CarID AvgF
3AA 321.6666
我将如何把一个标准只对当前一周,但回到三个星期它通过标准是什么?
答
您可以使用此查询来显示哪些汽车有5个或更多的NumDataPoints。
SELECT CarID FROM tblCars
WHERE
(((WeekOf)=#2011-05-28#)
AND ((NumDataPoints)>=5));
并且这样可以平均每辆车在3周范围内的燃油值。
SELECT CarID, Avg(Fuel) AS AvgF
FROM tblCars
WHERE
(((WeekOf)>=#2011-05-14#
And (WeekOf)<=#2011-05-28#))
GROUP BY CarID;
INNER在CarID上加入它们,因此第一个查询从第二个查询中选择汽车的一个子集。
SELECT whichcars.CarID, fuel_averages.AvgF
FROM
[SELECT CarID FROM tblCars
WHERE
(((WeekOf)=#2011-05-28#)
AND ((NumDataPoints)>=5))
]. AS whichcars
INNER JOIN [SELECT CarID, Avg(Fuel) AS AvgF
FROM tblCars
WHERE
(((WeekOf)>=#2011-05-14#
And (WeekOf)<=#2011-05-28#))
GROUP BY CarID
]. AS fuel_averages
ON whichcars.CarID = fuel_averages.CarID;
+0
我也喜欢这个解决方案。 – sinDizzy 2011-06-04 18:06:01
什么是协议如果我认为我找到了解决方案/张贴评论或添加到原始帖子?无论如何,如果我更换CarId =(选择CarId从tblCars与CarId IN(选择CarId从tblCars我认为这将做到这一点? – sinDizzy 2011-06-03 21:50:31
你可以回答自己的问题,或者你可以简单地删除该问题。另一个选项问meta.stackoverflow。 com你认为你应该做什么 – 2011-06-03 21:55:34