我在调用数据库时使用以下脚本:
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工作正常。
我哪里出错了?
答案 0 :(得分:0)
正确答案如下:
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条件的绑定不够紧密,它正在将计算中的数据提取到过滤后的项目之外。