SQL-запрос для определения% пользователей в группе, отправивших 1 или более приглашений - PullRequest
1 голос
/ 23 апреля 2019

У меня есть следующие таблицы:

USERS: id, created_at, onboarding_started_at
INVITATIONS: id, user_id

Я работаю над написанием запроса, который показывает% новых пользователей, отправивших 1 или более приглашений. Вот что у меня есть:

SELECT floor(datediff(u.created_at, curdate()) / 7) AS weeks_ago,
       count(DISTINCT u.id) AS "New Users in Cohort", 
       count(DISTINCT i.id) AS "Total Invites in Cohort",
       count(DISTINCT i.user_id) AS "Uniq Users who invited Cohort",
count(DISTINCT u.id) / count(DISTINCT i.user_id) AS "% who invite"
FROM users u 
LEFT JOIN invitations i
     ON u.id = i.user_id
WHERE u.onboarding_started_at IS NOT NULL
GROUP BY weeks_ago;

В настоящее время выводится сообщение «%, кто приглашает» неправильно. Пример данных:

weeks_ago | New Users in Cohort | Uniq Users who Invited Cohort | % who invite
-32 | 12 |  557 |  12 1.0000

В приведенном выше примере % who invite показывает 1.0000

Что я должен сделать, чтобы исправить "%, кто приглашает"? Я неправильно вычисляю Uniq Users who invited Cohort?

Спасибо

1 Ответ

1 голос
/ 24 апреля 2019

Вы пробовали приводить значения как DECIMAL?

CAST (количество (DISTINCT u.id) как десятичное (7,2)) / CAST (количество (DISTINCT i.user_id) как десятичное (7,2))

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...