私はいくつかのことを定量化しようとしています。これがサンプルです(もちろん簡略化されています):
tblParent: { Number, Name }
tblChild: { Number, Name, ParentNumber, Criterion }
同じ子の総数を数えたいのですがParentNumber
(Group ByとCount(1)を使用すると簡単です)、問題はその数を同じ子の数と比較することParentNumber
ですCriterion = "Something"
。
これが私がこれまでに持っているものです:
SELECT "Criterion = 1" AS CritDesc,
COUNT(1) AS Total,
ParentNumber AS Parent,
( COUNT(1) / (SELECT Total FROM [TotalCountingQuery]) ) AS Percentage
FROM tblChild
WHERE Criterion = 1
GROUP BY ParentNumber;
[TotalCountingQuery]
単純に、各ParentNumberを持つすべての子をカウントし、その合計をTotal
SELECT COUNT(1) AS Total FROM tblChild GROUP BY ParentNumber;
そのため、そのTOTALカウントを使用して、Criterion = 1の数(パーセンテージ)を計算しようとしています。ただし、サブクエリを使用しているため、サブクエリは複数の合計を返すことはできません。各ParentNumberの合計を返す必要があります。これは、そのParentNumberを持つ各子のパーセンテージ計算で使用されます。
最終結果は次のようになります。
CritDesc | Total | Parent | Percentage
```````````````````````````````````````````````````````
Criterion=1| 2 | 45011 | 0.333 // Means there should be 6 Children with 45011 as parent
Criterion=1| 4 | 43255 | 0.9
Criterion=1| 1 | 59056 | 0.44
これらのクエリのいくつかをレポートにまとめて、親ごとにグループ化された完全なレポートを作成し、すべての親のすべての「Criterion=X」を表示します。それは機能しています、私は上記の機能が必要です。
アイデア?
編集:この目的のための参加の私の試み:
SELECT "Criterion=1" AS CritDesc,
COUNT(c.Number) AS Total,
ParentNumber AS Parent,
COUNT(c.Number)/q.Total AS Percentage
FROM tblChild AS c INNER JOIN tblParent AS q ON c.ParentNumber = q.Number
GROUP BY ParentNumber
これはスローします:You tried to execute a query ... 'Count(1)/q.Total' as part of an aggregate function
。それをgroup-byステートメントに追加するとCannot have aggregate function in GROUP BY
...がスローされます。