Skip to content

Commit

Permalink
Update dashboard.sql
Browse files Browse the repository at this point in the history
фикс по линтеру
  • Loading branch information
beton18 authored Sep 29, 2024
1 parent 2305b40 commit 1f584b3
Showing 1 changed file with 35 additions and 36 deletions.
71 changes: 35 additions & 36 deletions dashboard.sql
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,7 @@
--Подзапрос visitors_and_leads получает уникальные
--визиты пользователей с данными о лидах
with visitors_and_leads as (
select distinct on (s.visitor_id)
--Убираем дубли по visitor_id, берём последний визит
select distinct on (s.visitor_id)
s.visitor_id, -- ID посетителя
s.visit_date, -- Дата визита
s.source as utm_source, -- UTM-источник
Expand All @@ -21,44 +20,44 @@ with visitors_and_leads as (
left join leads as l
on
s.visitor_id = l.visitor_id --Привязываем лиды к визитам
and s.visit_date <= l.created_at
--Только если визит был до или в момент создания лида
and s.visit_date <= l.created_at
--Только если визит был до или в момент создания лида
where s.medium in ('cpc', 'cpm', 'cpa', 'youtube', 'cpp', 'tg', 'social')
--Ограничиваем типы трафика
order by 1, 2 desc -- Сортируем по visitor_id и дате визита (для distinct)
--Ограничиваем типы трафика
ORDER BY 1, 2 DESC -- Сортируем по visitor_id и дате визита (для distinct)
),
-- Подзапрос costs собирает расходы по рекламным кампаниям из двух таблиц
costs as (
select
costs AS (
SELECT
campaign_date::date, -- Дата кампании
SUM(daily_spent) as daily_spent, -- Общие расходы за день
SUM(daily_spent) AS daily_spent, -- Общие расходы за день
utm_source, -- UTM-источник
utm_medium, -- UTM-тип трафика
utm_campaign -- UTM-кампания
from vk_ads -- Таблица расходов ВК
group by 1, 3, 4, 5 -- Группируем по дате, источнику, типу трафика и кампании
union all
select
FROM vk_ads -- Таблица расходов ВК
GROUP BY 1, 3, 4, 5
UNION ALL
SELECT
campaign_date::date, -- Аналогично для яндекс-рекламы
SUM(daily_spent) as daily_spent,
SUM(daily_spent) AS daily_spent,
utm_source,
utm_medium,
utm_campaign
from ya_ads -- Таблица расходов Яндекс
group by 1, 3, 4, 5
FROM ya_ads -- Таблица расходов Яндекс
GROUP BY 1, 3, 4, 5
)
-- Основной запрос, соединяющий данные визитов с расходами и считающий метрики
select
SELECT
vl.visit_date::date,-- Дата визита
COUNT(*) as visitors_count,-- Количество визитов
vl.utm_source,-- UTM-источник
vl.utm_medium,-- UTM-тип трафика
vl.utm_campaign,-- UTM-кампания
daily_spent as total_cost, -- Общие расходы на рекламу в этот день
COUNT(*) filter (where lead_id is not NULL) as leads_count,
--Количество лидов
COUNT(*) filter (where status_id = 142) as purchases_count,
--Количество покупок (лиды со статусом покупки)
daily_spent AS total_cost, -- Общие расходы на рекламу в этот день
COUNT(*) filter (WHERE lead_id IS NOT NULL) AS leads_count,
--Количество лидов
COUNT(*) filter (WHERE status_id = 142) AS purchases_count,
--Количество покупок (лиды со статусом покупки)
COALESCE(SUM(amount) filter (where status_id = 142), 0) as revenue
--Доход от покупок
from visitors_and_leads as vl
Expand All @@ -68,22 +67,22 @@ left join costs as c -- Левый джойн с таблицей расход
and vl.utm_medium = c.utm_medium -- По типу трафика
and vl.utm_campaign = c.utm_campaign -- По кампании
and vl.visit_date::date = c.campaign_date::date -- И по дате
group by 1, 3, 4, 5, 6
group by 1, 3, 4, 5, 6
--Группируем по дате, источнику, типу трафика, кампании и расходам
order by 9 desc nulls last, 2 desc, 1, 3, 4, 5;
--Сортируем сначала по доходу, затем по количеству визитов
--Находим затраты на рекламу по дням
SELECT
campaign_date::date AS day,
'VK' AS source,
SUM(daily_spent) AS total_spent
FROM vk_ads
GROUP BY day
UNION ALL
SELECT
campaign_date::date AS day,
'Yandex' AS source,
select
campaign_date::date as days,
'VK' as source,
SUM(daily_spent) AS total_spent
FROM ya_ads
GROUP BY day
ORDER BY day, source;
from vk_ads
group by days
union all
select
campaign_date::date as days,
'Yandex' as source,
SUM(daily_spent) as total_spent
from ya_ads
group by days
order by days, source;

0 comments on commit 1f584b3

Please sign in to comment.