Попытка рассчитать коэффициент конверсии клиентов, которые просто подписывают виртуальную открытку, чтобы в конечном итоге купить карту - PullRequest
0 голосов
/ 21 сентября 2019

Я пытаюсь рассчитать коэффициент конверсии клиентов, которые подписывают виртуальную открытку и в итоге не покупают тем, кто подписывает и покупает.На моем сайте, если клиент подписывает поздравительную открытку, но не покупает ее (либо оставляет, либо сохраняет карту на потом), это записывается в нашу БД в столбце sign_notification с 1 и is_paid с 0. Клиенты, которые подписывают и покупаютпоздравительные открытки записаны в соответствующих столбцах как 1 и 1. Я использую справочный адрес электронной почты в качестве уникального ключа для этой таблицы, поскольку вся информация о других клиентах находится в других таблицах.

Я полный новичок вSQL и вот запрос, который я написал (пожалуйста, будьте любезны):

SELECT COUNT(ref_email) 
FROM canvases WHERE sign_notification = 1 && is_paid = 0 / 
(
SELECT COUNT(ref_email) 
FROM canvases 
WHERE sign_notification = 1 && is_paid = 1);

Предполагается ли использовать вместо этого SUM?Оба эти запроса работают раздельно, но я не уверен, как написать запрос, который правильно их разделяет.

Ответы [ 3 ]

0 голосов
/ 21 сентября 2019

Just:

SELECT SUM(is_paid = 1) / COUNT(*)
FROM canvases 
WHERE sign_notification = 1 

Это даст вам коэффициент конверсии, то есть количество покупателей, подписавших и купленных, деленное на количество подписавших клиентов.

Это выражение использует замечательную функцию MySQL, где истинное условие оценивается как 1;это исключает необходимость в конструкции CASE.

0 голосов
/ 21 сентября 2019

Вы можете сделать это со средним:

SELECT AVG(is_paid)
FROM canvases
WHERE sign_notification = 1 ;

Это работает, потому что is_paid - это число - либо 0, либо 1. Среднее - это доля людей, которые заплатили.(Вы можете использовать 1 - AVG(is_paid), чтобы получить людей, которые не платили.

0 голосов
/ 21 сентября 2019

Ты довольно близко.Попробуйте:

SELECT SUM(CASE WHEN sign_notification = 1 AND is_paid = 0 THEN 1 ELSE 0 END) / COUNT(1) AS PercentPaid
FROM canvases
WHERE sign_notification = 1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...