Расчет процента нескольких групп данных и группировка по имени - PullRequest
0 голосов
/ 15 апреля 2020

Вот пример того, как выглядит моя таблица: enter image description here

Я пытаюсь вычислить процент Opt-In каждого отдельного "Name" от всех остальных. Данные ответа будут выглядеть примерно так: enter image description here

Я поиграл с решением, вот мой код:

SELECT 'Hunters Treat Shop' AS "Organization", cast(A.NUM as float)/cast(A.DENOM as float) * 100 AS Percentage
FROM
(SELECT
(SELECT COUNT(*) 
FROM report
WHERE Name = 'Hunters Treat Shop'
AND Opt-In = TRUE
AND [[{{DateRange}}]]) AS NUM,

(SELECT COUNT(*) 
FROM report
WHERE Name = 'Hunters Treat Shop'
AND Thank-You Delivered = TRUE
AND [[{{DateRange}}]]) AS DENOM) A

UNION ALL 

SELECT 'Julianas Treat Shop' AS "Organization", cast(A.NUM as float)/cast(A.DENOM as float) * 100 AS Percentage
FROM
(SELECT
(SELECT COUNT(*) 
FROM report
WHERE Name = 'Julianas Treat Shop'
AND Opt-In = TRUE
AND [[{{DateRange}}]]) AS NUM,

(SELECT COUNT(*) 
FROM report
WHERE Name = 'Julianas Treat Shop'
AND Thank-You Delivered = TRUE
AND [[{{DateRange}}]]) AS DENOM) A

Этот запрос работает как задумано, но мне нужно повторить и объединить еще дважды, чтобы получить желаемый результат.

1 Ответ

1 голос
/ 15 апреля 2020

Я не уверен, что ваш запрос связан с вопросом, но вы можете использовать агрегирование на основе данных, которые вы описываете:

select name, avg( opt_in = 'true' ) as opt_in_ratio
from t
group by name;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...