我正在处理具有以下模式的报告:http://sqlfiddle.com/#!15/fd104/2
当前查询工作正常,如下所示:
基本上是3表内部联接。我没有进行此查询,但是留下查询的开发人员想修改该查询。如您所见,
TotalApplication
仅基于a.agent_id
计算总应用程序数。您会在结果中看到totalapplication
列。我要删除的是将totalapplication
更改为新的两列。我想添加一个completedsurvey
和partitalsurvey
列。所以基本上这部分将成为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
但是我不知道将该查询放在何处或查询的外观如何。最终输出包含以下列
agent_id, name, completedsurvey, partialsurvey, loginhours, applicationperhour, rph
一旦确定,那么applicationperhour和rph我可以自己修复
#1 楼
如果我对您的理解正确,那么您正在寻找经过过滤的(条件)聚合:case
语句: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;
评论
我正在使用9.3。可以吗
– jackhammer013
2015年9月1日8:11
@JoeneFloresca:不,对于9.3,您需要CASE语句。您应该始终指定要使用的版本,尤其是不是当前版本时。
– a_horse_with_no_name
2015年9月1日上午8:12
非常感谢!现在工作完美。抱歉,我编辑了我的帖子,下次再记住。谢谢 :)
– jackhammer013
2015年9月1日在8:16
感谢您的回答。真的帮了我如果我执行COUNT(处置=“完成调查”或NULL),也对我有用
–lucasarruda
19 Mar 15 '19在19:32
救我的命!大!
–寺庙
19年6月14日在1:31