【问题标题】:MS Access get Average only if one record meets criteria仅当一条记录符合条件时,MS Access 才会获得平均值
【发布时间】:2011-06-03 21:39:24
【问题描述】:

在 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 的汽车的平均燃油。因此,本周是 2011 年 5 月 28 日,唯一积分数 >= 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

我将如何仅在当前一周设置标准,但当它通过标准时返回三周?

【问题讨论】:

  • 如果我认为我找到了解决方案/发表评论或添加到原始帖子,协议是什么?无论如何,如果我将 CarId = (SELECT CarId FROM tblCars 替换为 CarId IN (SELECT CarId FROM tblCars 我认为这样做会正确吗?
  • 您可以回答自己的问题,也可以直接删除问题。另一种选择是在 meta.stackoverflow.com 上询问您认为应该做什么

标签: sql ms-access group-by aggregate average


【解决方案1】:

您可以使用此查询来显示哪些汽车有 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;

在 CarID 上进行 INNER JOIN,因此第一个查询从第二个查询中选择汽车的子集。

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;

【讨论】:

    猜你喜欢
    • 2016-11-16
    • 2021-06-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-12
    • 1970-01-01
    • 2022-08-16
    • 1970-01-01
    相关资源
    最近更新 更多