MS Access 根据其他列数据平均一个值

MS Access average a value based on other column data

所以我的数据看起来像这样:

Smpl_id Plate_id CT_Value
  1        1       27
  1        1       32
  2        1       56
  2        1       49
  1        2       40
  1        2       36
  2        2       58
  2        2       64

我想设计一个查询,使盘子中每个样本的 returns 平均值 CT_Value,所以它看起来像这样:

Smpl_id Plate_id Avg_CT
  1         1     29.5
  2         1     52.5
  1         2     38
  2         2     61

我试过了

Avg_CT: DAvg("[CT_Value]","[qPCR_sample_data]","[Plate_id] = '" & [Plate_id] & "'" And "[Smpl_is] = '" & [Smpl_id] & "'")

但这只会导致:

Smpl_id Plate_id CT_Value
  1        1      45.25
  1        1      45.25
  2        1      45.25
  2        1      45.25
  1        2      45.25
  1        2      45.25
  2        2      45.25
  2        2      45.25

我不能只列出板或样品 ID 号,因为这实际上是一个不断增长的长列表。我还需要在未来的计算中使用这些平均数(我已经想出如何去做)。

另外,我刚刚开始使用MS Access(设计一个全新的数据库),所以我有点了解SQL,但实际经验很少。

谢谢!

您应该能够使用简单的聚合,例如:

select t.smpl_id, t.plate_id, avg(t.ct_value) as avg_ct
from qpcr_sample_data t
group by t.smpl_id, t.plate_id

您将需要使用分组查询。

  • 创建一个新查询,并添加 table(在我的示例中,我将其称为 tblSample)。
  • 将三个字段 Smpl_id、Plate_id 和 CT_Value 添加到查询网格。
  • 在查询设计菜单上,单击标有 "Totals" 的按钮。
  • 这会在查询网格中引入一个名为 "Total" 的新行,所有三个字段都将其设置为 "Group By"。
  • 只需将 CT_Value 的 "Group By" 更改为 "Avg",然后 运行 查询即可获得您想要的结果:

此致,