我在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;
这返回了一个错误“这个子查询最多可以返回一条记录”,我知道这是错误的,因为当我尝试将子查询作为独立查询运行时,它成功返回了多条记录。
问题:
如何获得STDEV
的{{1}}?
子问题:如果可以通过更正我的示例中的错误语法来解答此问题,请执行此操作。
答案 0 :(得分:0)
尝试为“SELECT COUNT(data.JobID)....”执行最大表查询。 然后对于第二个查询,使用新的基表 有时,在2个或更多查询中执行某些操作会更容易。
答案 1 :(得分:0)
战略的微小变化对所有案件都不起作用但最终为这个案件工作似乎解决了这个问题。我没有将子查询粘贴在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;
这似乎完成了工作。