1

我在 MS Access 2010 中有一张表,我正在尝试分析属于完成各种工作的不同群体的人。我想做的是计算每个人每组完成的工作数量的标准偏差。意思是,我想要的输出是对于每个组,我会有一个数字,该数字构成每个人做了多少工作的标准偏差。

数据结构如下:

OldGroup, OldPerson, JobID 

我知道我需要COUNT按组和个人做一个工作 ID。我尝试创建一个子查询来使用,但这不起作用:

SELECT data.OldGroup, STDEV(
     SELECT COUNT(data.JobID)
     FROM data
     WHERE data.Classification = 1
     GROUP BY data.OldGroup, data.OldPerson
  )
FROM data
GROUP BY data.OldGroup;

这返回了一个错误“此子查询最多可以返回一条记录”,我知道这是错误的,因为当我尝试将子查询作为独立查询运行时,它成功返回了多条记录。

问题: 我怎样才能得到STDEVa COUNT

子问题:如果可以通过更正我的示例中不正确的语法来回答这个问题,请这样做。

4

2 回答 2

1

策略上的一个微小变化,并不适用于所有情况,但最终确实适用于这种情况,似乎解决了这个问题。我没有将子查询粘贴在SELECT语句中,而是将其放入FROM,模仿创建单独的表。

因此,我的代码如下所示:

SELECT OldGroup, STDEV(NumberJobs) AS JobsStDev
FROM (
    SELECT OldGroup, OldPerson, COUNT(JobID) AS NumberJobs
    FROM data
    WHERE data.Classification = 1
    GROUP BY OldGroup, OldPerson
) AS TempTable
GROUP BY OldGroup;

这似乎完成了工作。

于 2012-11-12T18:25:52.743 回答
0

尝试对“SELECT COUNT(data.JobID)....”进行最大表查询,然后对于第二个查询,使用新的基表。
有时在 2 个或更多查询中做某事会更容易。

于 2012-11-12T17:20:54.920 回答