【发布时间】:2017-03-20 18:37:58
【问题描述】:
我在 MS Access 中编写查询时遇到问题后才加入。我正在尝试编写一个查询,该查询将从复制的样本结果列表中提取前两个有效样本,然后希望对样本值进行平均。我编写了一个查询,它使用 only 两个有效样本提取样本并将这些值取平均值。但是,我的查询不会提取有两个以上有效样本结果的样本。这是我的查询:
SELECT temp_platevalid_table.samp_name AS samp_name, avg (temp_platevalid_table.mean_conc) AS fin_avg, count(temp_platevalid_table.samp_valid) AS sample_count
FROM Temp_PlateValid_table
WHERE (Temp_PlateValid_table.id In (SELECT TOP 2 S.id
FROM Temp_PlateValid_table as S
WHERE S.samp_name = S.samp_name and s.samp_valid=1 and S.samp_valid=1
ORDER BY ID))
GROUP BY Temp_PlateValid_table.samp_name
HAVING ((Count(Temp_PlateValid_table.samp_valid))=2)
ORDER BY Temp_PlateValid_table.samp_name;
这是我正在尝试做的一个示例:
ID Samp_Name Samp_Valid Mean_Conc
1 54d2d2 1 15
2 54d2d2 1 20
3 54d2d2 1 25
平均 mean_conc 应该是 17.5,但是,对于我当前的查询,我根本不会收到 54d2d2 的值。有没有办法调整我的查询,以便我获得具有两个以上有效值的样本的值?请注意,我使用的是 MS Access,所以我认为我不能使用更高级的 SQL 代码(分区依据等)。
提前感谢您的帮助!
【问题讨论】:
-
我认为问题在于,当您想要比较来自内部查询的一个和来自外部查询的一个时,您正在将 samp_name 与同一张表中的 samp_name 进行比较。下面来自 Gordon 的示例说明了我的意思。