質問

編集 postgres 9.3

私はこれを次のスキーマを持つレポートに取り組んでいます。 /#!15 / FD104 / 2

現在のクエリは、このようなものです。

画像の説明が入力されています

基本的には3つのテーブル内側の結合です。私はこのクエリを作成しませんでしたが、それを残した開発者と私はクエリを変更したいです。ご覧のとおり、TotalApplicationa.agent_idに基づいて総アプリケーションをカウントするだけです。そして結果のtotalapplication列を見ることができます。私が欲しいものを削除してtotalapplicationを新しい2列に変更することです。 completedsurveypartitalsurvey列を追加したいです。だから基本的にこの部分は

になるでしょう
SELECT a.agent_id as agent_id, COUNT(a.id) as CompletedSurvey
FROM forms a WHERE  a.created_at >= '2015-08-01' AND 
a.created_at <= '2015-08-31' AND disposition = 'Completed Survey'
GROUP BY a.agent_id
.

AND disposition = 'Completed Survey'を追加しましたが、partialsurveyで同じクエリがあるcompletedsurveyの唯一の違いが必要です。唯一の違いは

です。
AND disposition = 'Partial Survey'
.

COUNT(a.id) as PartialSurvey
.

しかし、そのクエリを置くか、またはクエリのように見えるかどうかをDunnoさん。最後の出力にはこれらの列があります。

agent_id, name, completedsurvey, partialsurvey, loginhours, applicationperhour, rph
.

[OK]の場合は、ApplicationPerhourとRPHが自分で修正できます

役に立ちましたか?

解決

あなたが正しく理解しているなら、あなたはフィルタリングされた(条件付き)集約を探しています:

SELECT a.agent_id as agent_id, 
       COUNT(a.id) filter (where disposition = 'Completed Survey') as CompletedSurvey, 
       count(a.id) filter (where disposition = 'Partial Survey') as partial_survey
FROM forms a 
WHERE a.created_at >= '2015-08-01' 
  AND a.created_at <= '2015-08-31' 
GROUP BY a.agent_id;
.

edit
古いバージョンの場合(<9.4)caseステートメントを使用する必要があります。

SELECT a.agent_id as agent_id, 
       COUNT(case when disposition = 'Completed Survey' then a.id end) as CompletedSurvey, 
       COUNT(case when disposition = 'Partial Survey' then a.id end) as partial_survey
FROM forms a 
WHERE a.created_at >= '2015-08-01' 
  AND a.created_at <= '2015-08-31' 
GROUP BY a.agent_id;
.

ライセンス: CC-BY-SA帰属
所属していません dba.stackexchange
scroll top