SQL Query, чтобы показать для всех пользователей, созданных ВЧЕРА, Сколько отправлено приглашений? - PullRequest
0 голосов
/ 25 апреля 2019

У меня есть следующий запрос:

SELECT floor(datediff(u.created_at, curdate()) / 1) AS days_ago,
       count(DISTINCT u.id) AS "New Users 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 days_ago;

Я пытаюсь получить запрос, чтобы вернуть следующее:

+----------+-----------+--------------------------+--------------+
| days_ago | New Users | Unique Users who Invited | % who invite |
+----------+-----------+--------------------------+--------------+
|        1 |        20 |                       10 | 50%          |
+----------+-----------+--------------------------+--------------+

Новые пользователи будут там, где u.created_at являетсядень запрос использует

Что я делаю не так?Спасибо!

1 Ответ

0 голосов
/ 17 мая 2019

Вы не сказали достаточно, чтобы я мог судить, нужен ли DISTINCT.

LEFT кажется ненужным.

"Вчера" - это ... ...> = CURDATE ()- ИНТЕРВАЛ 1 ДНЯ И ...

SELECT count(DISTINCT u.id) AS "New Users 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 
JOIN invitations i
     ON u.id = i.user_id
WHERE u.onboarding_started_at IS NOT NULL
  AND u.created_at >= CURDATE() - INTERVAL 1 DAY
  AND u.created_at  < CURDATE()

Если бы вы хотели, чтобы подсчет за несколько дней, я бы использовал DATE(u.created_at) в качестве значения DATE для отображения и GROUPing BY.(Если вы действительно не хотите "days_ago".)

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