【问题标题】:Get the AVG of two SQL Access Queries获取两个 SQL 访问查询的 AVG
【发布时间】:2025-12-30 19:40:10
【问题描述】:

我正在尝试从 MS Access 中内置的两个单独的 sql 查询的结果中获取 AVERAGE。第一个sql查询拉到最大的记录:

SELECT DISTINCTROW Sheet1.Tx_Date, Sheet1.LName, Sheet1.Patient_Name, Sheet1.MRN, 
  Max(Sheet1.) AS [Max Of FEV1_ACT], 
  Max(Sheet1.FEF_25_75_ACT) AS [Max Of FEF_25_75_ACT]
FROM Sheet1
GROUP BY Sheet1.Tx_Date, Sheet1.LName, Sheet1.Patient_Name, Sheet1.MRN;

第二条sql查询拉第二大记录:

SELECT Sheet1.MRN, Sheet1.Patient_Name, Sheet1.Lname, 
  Max(Sheet1.FEV1_ACT) AS 2ndLrgOfFEV1_ACT, 
  Max(Sheet1.FEF_25_75_ACT) AS 2ndLrgOfFEF_25_75_ACT
FROM Sheet1
WHERE (((Sheet1.FEV1_ACT)<(SELECT MAX( FEV1_ACT )
                 FROM Sheet1 )))
GROUP BY Sheet1.MRN, Sheet1.Patient_Name, Sheet1.Lname;

这两个查询效果很好,我只需要一些帮助来将这两个查询结果的AVERAGE 合二为一。谢谢。

【问题讨论】:

    标签: sql ms-access max average


    【解决方案1】:

    怎么样

    SELECT Avg(FEV1_ACT) FROM
        (SELECT Top 2 FEV1_ACT FROM Sheet1 ORDER BY FEV1_ACT DESC)
    

    【讨论】:

    • 感谢 Remou,这实际上是一个巨大的帮助!运行这个查询,它是否会阻止我拉取其他字段或者我只能获取值?
    • 你可以获取其他字段,ORDER BY 控制前两个是什么。请注意,如果行具有相同的值,则 TOP n 将选择多于 n 的行。如果您需要其他字段,它们必须在外部查询中的 GROUP BY 或类似内容中。
    【解决方案2】:

    联合这些查询并平均记录集

    select avg(select field from table1 union select field from table2)
    

    【讨论】:

    • 试过了。我收到“子查询中不允许此操作”错误。