|
Воронка продаж в postgres
|
|||
---|---|---|---|
#18+
Построить воронку продаж по странам вида: “country”, “installs”, “trials”, “purchases”, “conversion_rate_to_trial”, “conversion_rate_to_purchase” Ограничения: на 1 пользователя может быть только 1 оформление триала и 1 оформление purchase Покупка возможна только по истечению платного периода. Таблица: DROP TABLE IF EXISTS events; CREATE TABLE events ( transaction_id SERIAL PRIMARY KEY, datetime timestamp, event_type VARCHAR(255) NOT NULL, user_id INT NOT NULL, country VARCHAR(255) NOT NULL ); INSERT INTO events (transaction_id, datetime, event_type, user_id, country) VALUES (345642,'2021-01-03', 'installs', 3253, 'Russia'), (353787,'2021-01-03', 'trial', 3253, 'Russia'), (363568,'2021-01-10', 'purchase', 3253, 'Russia'), (436561,'2021-01-05', 'installs', 3333, 'Russia'), (252512,'2021-01-06', 'trial', 3333, 'Russia'), (325368,'2021-01-13', 'purchase', 3333, 'Russia'), (417809,'2021-01-03', 'installs', 3266, 'Brazil'), (436556,'2021-01-14', 'installs', 3266, 'Brazil'), (436578,'2021-01-16', 'trial', 3266, 'Brazil'), (436800,'2021-01-23', 'purchase', 3266, 'Brazil') Здесь рассчитал общее количество событий по типам: SELECT country, sum(case when event_type='trial' then 1 else 0 end) as trial, sum(case when event_type='installs' then 1 else 0 end) as installs, sum(case when event_type='purchase' then 1 else 0 end) as purchase FROM events GROUP BY country; Но нужно еще учесть, то что загрузок может быть несколько. Т.е установил один раз, удалил, установил второй раз. Только после этого второй установки взял пробный период и только после него возможна покупка. Пока не пойму как это реализовать. with installs as ( select distinct e.user_id from events e where e.event_type = 'installs' ), trials as ( select distinct e.user_id from installs s inner join events e on e.user_id = s.user_id where e.event_type = 'trial' ), purchases as ( select distinct e.user_id from trials a inner join events e on e.user_id = a.user_id where e.event_type = 'purchase' ) select 'installs' as step, COUNT(*) from installs union select 'trials' as step, COUNT(*) from trials union select 'purchase' as step, COUNT(*) from purchases order by count desc ; ... |
|||
:
Нравится:
Не нравится:
|
|||
22.01.2022, 11:09 |
|
Воронка продаж в postgres
|
|||
---|---|---|---|
#18+
[quot gggg111#22424621]Построить воронку продаж по странам вида: “country”, “installs”, “trials”, “purchases”, “conversion_rate_to_trial”, “conversion_rate_to_purchase” Ограничения: на 1 пользователя может быть только 1 оформление триала и 1 оформление purchase Покупка возможна только по истечению платного периода. Таблица: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25.
Здесь рассчитал общее количество событий по типам: Код: sql 1. 2. 3. 4. 5. 6.
Но нужно еще учесть, то что загрузок может быть несколько. Т.е установил один раз, удалил, установил второй раз. Только после этого второй установки взял пробный период и только после него возможна покупка. Пока не пойму как это реализовать. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.01.2022, 11:24 |
|
Воронка продаж в postgres
|
|||
---|---|---|---|
#18+
gggg111 2021-01-03 это не datetime, а date gggg111 (353787,'2021-01-03', 'trial', 3253, 'Russia'), 'trial' - должен быть в виде цифры, а само слово - в словаре gggg111 Но нужно еще учесть, то что загрузок может быть несколько. Т.е установил один раз, удалил, установил второй раз. ну и что, триал то 1 ... |
|||
:
Нравится:
Не нравится:
|
|||
23.01.2022, 10:12 |
|
|
start [/forum/topic.php?fid=53&msg=40128658&tid=1993696]: |
0ms |
get settings: |
8ms |
get forum list: |
11ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
476ms |
get topic data: |
12ms |
get forum data: |
2ms |
get page messages: |
35ms |
get tp. blocked users: |
1ms |
others: | 298ms |
total: | 851ms |
0 / 0 |