【问题标题】:How do I combine multiple values in an AND OR statement in Postgresql如何在 Postgresql 的 AND OR 语句中组合多个值
【发布时间】:2019-03-03 09:44:27
【问题描述】:

我在调用我的数据库时使用以下脚本:

SELECT 
 1.0*(COUNT(*) FILTER(WHERE "stitch_jira"."issues"."fields__status__statusCategory__name"='Done'
 AND "stitch_jira"."issues"."fields__project__key"='FLUM'
 AND "stitch_jira"."issues"."fields__issuetype__name"='Task'
 OR "stitch_jira"."issues"."fields__issuetype__name"='Story'))/
 (COUNT(*) FILTER(WHERE "stitch_jira"."issues"."fields__status__statusCategory__name" IN('To Do','In Progress','Done')
 AND "stitch_jira"."issues"."fields__project__key"='FLUM'
 AND "stitch_jira"."issues"."fields__issuetype__name"='Task'
 OR "stitch_jira"."issues"."fields__issuetype__name"='Story'))
FROM "stitch_jira"."issues"

基本上,它应该得到已完成的任务和故事,然后将它们除以任务和故事的总数。结果并没有证明这一点。如果我只做任务或只做故事,IT 工作得很好,但当我两者都做时就不行。

我哪里出错了?

【问题讨论】:

  • 你的意思是结果与个别结果的划分不同?这会让我感到惊讶。

标签: postgresql filter count


【解决方案1】:

正确答案如下:

SELECT 
 1.0*
 ((COUNT(*) FILTER(WHERE "stitch_jira"."issues"."fields__status__statusCategory__name"='Done'
 AND "stitch_jira"."issues"."fields__project__key"='FLUM'
 AND "stitch_jira"."issues"."fields__issuetype__name"='Task'))
 +
 (COUNT(*) FILTER(WHERE "stitch_jira"."issues"."fields__status__statusCategory__name"='Done'
 AND "stitch_jira"."issues"."fields__project__key"='FLUM'
 AND "stitch_jira"."issues"."fields__issuetype__name"='Story')))
 /
 ((COUNT(*) FILTER(WHERE "stitch_jira"."issues"."fields__status__statusCategory__name" IN('To Do','In Progress','Done')
 AND "stitch_jira"."issues"."fields__project__key"='FLUM'
 AND "stitch_jira"."issues"."fields__issuetype__name"='Task'))
 +
 (COUNT(*) FILTER(WHERE "stitch_jira"."issues"."fields__status__statusCategory__name" IN('To Do','In Progress','Done')
 AND "stitch_jira"."issues"."fields__project__key"='FLUM'
 AND "stitch_jira"."issues"."fields__issuetype__name"='Story')))
FROM "stitch_jira"."issues"

问题在于 OR 条件的绑定不够紧密,并且它在过滤项目之外的计算中提取数据。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-11-16
    • 1970-01-01
    • 1970-01-01
    • 2011-02-04
    • 1970-01-01
    • 2018-08-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多