postgresql – Postgres计数在同一查询中具有不同的条件

postgresql – Postgres计数在同一查询中具有不同的条件,第1张

概述编辑Postgres 9.3 我正在编写一个包含以下架构的报告:http://sqlfiddle.com/#!15/fd104/2 当前查询工作正常,如下所示: 基本上它是一个3表内连接.我没有提出这个查询,但是离开它的开发人员我想修改查询.如您所见,TotalApplication只根据a.agent_id计算总应用程序.您可以在结果中看到totalapplication列.我想要的是删除它并将 编辑Postgres 9.3

我正在编写一个包含以下架构的报告:http://sqlfiddle.com/#!15/fd104/2

当前查询工作正常,如下所示:

基本上它是一个3表内连接.我没有提出这个查询,但是离开它的开发人员我想修改查询.如您所见,TotalApplication只根据a.agent_ID计算总应用程序.您可以在结果中看到totalapplication列.我想要的是删除它并将totalapplication更改为新的两列.我想添加一个完成调查和partitalsurvey专栏.所以基本上这部分将成为

SELECT a.agent_ID as agent_ID,COUNT(a.ID) as CompletedSurveyFROM 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我可以自己修复它

如果我理解正确,您正在寻找过滤(条件)聚合:
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_surveyFROM forms a WHERE a.created_at >= '2015-08-01'   AND a.created_at <= '2015-08-31' GROUP BY a.agent_ID;

编辑
对于旧版本(< 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_surveyFROM forms a WHERE a.created_at >= '2015-08-01'   AND a.created_at <= '2015-08-31' GROUP BY a.agent_ID;
总结

以上是内存溢出为你收集整理的postgresql – Postgres计数在同一查询中具有不同的条件全部内容,希望文章能够帮你解决postgresql – Postgres计数在同一查询中具有不同的条件所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/sjk/1167119.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-01
下一篇2022-06-01

发表评论

登录后才能评论

评论列表(0条)

    保存