--- Создадим временную таблицу “page_users” в которой:
WITH
page_users AS (
SELECT
user_pseudo_id,
--- подсчитаем количество событий с просмотром страницы “page_view” и
COUNTIF(event_name = 'page_view') AS count_page_view,
--- количество покупок из приложения “in_app_purchase” и количество покупок на сайте “purchase”
COUNTIF(event_name IN ('in_app_purchase', 'purchase')) AS count_purchase
FROM `bigquery-public-data.ga4_obfuscated_sample_ecommerce.events_*`
WHERE _TABLE_SUFFIX BETWEEN '20201201' AND '20201202'
GROUP BY user_pseudo_id
)
SELECT
--- Пользователи с количеством покупок больше нуля = true, пользователи не сделавшие ни одной покупки = false. Как бы создаем две группы, купившие и нет.
(count_purchase > 0) as status_purchase,
--- Считаем количество пользователей для конкретного статуса (true или false)
COUNT(*) AS count_users,
--- Суммируем для каждой группы просмотры страниц
SUM(count_page_view) AS sum_page_views,
--- Делим сумму количества просмотренных страниц на количество пользователей из данных групп
ROUND(SUM(count_page_view) / COUNT(*),2) AS avg_page_views,
FROM page_users
GROUP BY status_purchase