1

私はMSAccess2010にテーブルを持っており、さまざまな仕事を完了したさまざまなグループに属する人々を分析しようとしています。私がやりたいのは、各人がグループごとに完了した仕事の数のカウントの標準偏差を計算することです。つまり、私が望む出力は、各グループについて、各人が行った仕事の数の標準偏差を構成する数値を持っているということです。

データは次のように構成されています。

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;

これにより、「このサブクエリでは最大で1つのレコードを返すことができます」というエラーが返されました。これは、サブクエリをスタンドアロンクエリとして実行しようとすると、複数のレコードが正常に返されるためです。

質問: どうすればのを取得できSTDEVます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

「SELECTCOUNT(data.JobID)....」の最大テーブルクエリを実行してみてください。次に、2番目のクエリには、新しいベーステーブルを使用します。
2つ以上のクエリで何かを行う方が簡単な場合もあります。

于 2012-11-12T17:20:54.920 に答える