Коллега попросил получить некоторые данные о статистике пользователей - сколько пользователей смотрят 10 объявлений + и еще несколько параметров, которые я удалил для простоты. Прямо сейчас с очень похожим запросом я получаю единичные счетчики для каждого пользовательского события, которое я добавляю - даже при том, что оно должно подсчитывать, сколько случаев произошло событие для этого конкретного c пользователя.
with data as (
SELECT user_pseudo_id, event_timestamp, event_name, app_info.id,geo.country as country,platform,app_info.id as bundle_id,app_info.install_source as ins_source,traffic_source.source as traf_source,traffic_source.name as campaign,
UNIX_MICROS(TIMESTAMP('2019-11-01 00:00:00')) AS start_day,
3600*1000*1000*24 AS one_day_micros
FROM `api-table.analytics_random.events_*`
WHERE _table_suffix BETWEEN '20191101' AND '20191215'
),
cohort_info as (
select user_pseudo_id,bundle_id
from data
group by 1,2
),
day_0_users as (
SELECT DISTINCT user_pseudo_id,
FROM data
WHERE event_name = 'first_open'
AND event_timestamp BETWEEN start_day AND start_day+(15*one_day_micros)
),
finished_10 as (
SELECT DISTINCT user_pseudo_id
FROM data
WHERE event_name IN( 'ad_finished_10','ads_finished_10') AND event_timestamp BETWEEN start_day AND start_day+(30*one_day_micros)
),
joined as (
select
cohort_info.user_pseudo_id,
cohort_info.bundle_id,
count(distinct day_0_users.user_pseudo_id) as day_0_users,
count(distinct finished_10.user_pseudo_id) as finished_10_,
from day_0_users
left join finished_10 using(user_pseudo_id)
inner join cohort_info using(user_pseudo_id)
group by 1,2
)
select * from joined
Я думаю, что моя проблема в том, что я выбрал отдельный user_pseudo_id, где мне их посчитать? Проблема в том, что в объединенном подзапросе я попытался выбрать нечетные значения счетчика - результат был таким же.