我在MS 2010中有一张表格,我试图分析那些属于不同群体的人,他们已经完成了不同的工作。我想做的是计算每个人每组完成的工作数量的标准差。也就是说,我想要的输出是,对于每个组,我有一个数字,它构成了每个人做了多少份工作的标准差。
数据的结构如下:
OldGroup, OldPerson, JobID 我知道我需要按组和个人对作业I执行一个COUNT。我尝试创建一个要使用的子查询,但没有成功:
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;这返回了一个错误--“这个子查询最多可以返回一个记录”,我知道这是错误的,因为当我试图将子查询作为独立查询运行时,它成功地返回了多个记录。
问题:如何获得COUNT的STDEV
子问题:--如果这个问题可以通过纠正我的示例中的错误语法来回答,请这样做。
发布于 2012-11-12 18:25:52
战略上的一个小变化并不适用于所有情况,但最终却解决了这个问题。我没有将子查询放在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-12 17:20:54
尝试对"SELECT (data.JobID).“执行最大表查询然后,对于第二个查询,使用新的基表。
有时,在2个或更多查询中执行某些操作就更容易了。
https://stackoverflow.com/questions/13347770
复制相似问题