#postgresql #filter #count
#postgresql #Фильтр #количество
Вопрос:
Я использую следующий скрипт при вызове моей базы данных:
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"
В принципе, это должно заключаться в получении выполненных задач и историй, а затем в делении их на общее количество задач и историй. Результаты не демонстрируют этого. ЭТО работает нормально, если я выполняю только задачи или только истории, но не тогда, когда я делаю и то, и другое.
Где я ошибся?
Комментарии:
1. Вы имеете в виду, что результат отличается от разделения отдельных результатов? Это меня удивило бы.
Ответ №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 было недостаточно жестко привязано, и оно извлекало данные в своих вычислениях за пределами отфильтрованного проекта.