のは、あなたが必要とするグループ化から始めましょうを提供し、クエリの下に使用してみてください。あなたの結果では、各マネージャの行が必要なので、それは間違いなくDecision
です。
次に、WHERE
句の決定にフィルタリングを適用しないのは、カウント(*)から行を削除するためですが、HAVING
は集約フィールドの条件を意味するため、それをそこに置くことはできません。集計の1つでフィルタリングする必要があるため、他の集計でフィルタリングする必要がないため、必要な場所で集計内にcase
を使用できます。
最後に、成功率の計算は、Manager
フィールドとDecision
フィールドではなく、カウントに基づいて計算する必要があります。
その意味は明確ではないが、あなたはそれがサイドノートとして
SELECT Manager,
COUNT(*) AS CountOfManager,
SUM(case when Decision = "Approved" then 1 else 0 end) AS Decision,
SUM(case when Decision = "Approved" then 1 else 0 end)/Count(*) AS Success_Rate
FROM tbl_Quality_Disputes
GROUP BY Manager
に収まることができるように、それは少し私は私のクエリを編集します説明している場合、私はテーブルを削除して、私はLoggedDate
フィールドを無視単一のテーブルを使用する場合は不要なので、クエリをより冗長にするため、すべてのフィールドの接頭辞の名前を使用します。 2つ以上のテーブルを使用する場合は、カラム名の前に接頭辞を付けることをお勧めしますが、テーブルにエイリアスを付けてすべてをコンパクトにすることができます。
編集
LoggedDate
は同じマネージャーのすべての行で同じになりますので、あなたはGROUP BY
に追加したり、MIN
またはMAX
(私は後者のオプションを好むとそれを集約するか、Iそれをより堅牢に見出す)。
エラーは、おそらくAccess doesn't support the CASE
expression(ごめんなさい、それを知らなかったため)です。私はこれをIIF
に置き換えました。
SELECT Manager,
MAX(LoggedDate) AS MaxLoggedDate,
COUNT(*) AS CountOfManager,
SUM(IIF(Decision = "Approved", 1, 0)) AS CountOfDecision,
SUM(IIF(Decision = "Approved", 1, 0))/Count(*) AS Success_Rate
FROM tbl_Quality_Disputes
GROUP BY Manager
スキーマを提供できる場合は、簡単に手助けできます。 –
GROUP BYのときにDISTINCTを選択します。 – jarlh
HAVING句は、集約関数の条件用です。 – jarlh