PostgreSQL Расчет процента за 3 соединения - PullRequest
0 голосов
/ 02 марта 2019

Я смотрю на вычисление процентного значения, чтобы указать прогресс.Я объединяю данные из 3 независимых подсчетов в одном и том же столбце (но с разными значениями).Я так близок, но он продолжает давать мне НОЛЬ.

SELECT a.count1 / (a.count1 + b.count2 + c.count3) FROM
(SELECT count(*) AS "count1"
FROM "stitch_jira"."issues"
WHERE "stitch_jira"."issues"."fields__status__statusCategory__name" = 'To Do') a
CROSS JOIN 
(SELECT count(*) AS "count2"
FROM "stitch_jira"."issues"
WHERE ("stitch_jira"."issues"."fields__status__statusCategory__name" = 'In Progress')) b  
CROSS JOIN 
(SELECT count(*) AS "count3"
FROM "stitch_jira"."issues"
WHERE ("stitch_jira"."issues"."fields__status__statusCategory__name" = 'Done')) c

Любой совет, почему я получаю нулевой результат здесь?Должен дать "0,4 ..."

1 Ответ

0 голосов
/ 02 марта 2019

Вы можете переписать весь запрос, используя условное агрегирование, и привести к десятичному / умножению на 1,0:

SELECT 
 1.0*(COUNT(*) FILTER(WHERE fields__status__statusCategory__name='To Do'))/
 (COUNT(*) FILTER(WHERE fields__status__statusCategory__name 
                   IN('To Do','In Progress','Done')))
FROM "stitch_jira"."issues"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...