У меня есть две таблицы:
replies_referred и advert_view_hits
replies_referred содержит много полей, но соответствующие:
ad_id, acc_id and referrer
Advertise_view_hits содержит (sb_id - то же самое, что и acc_id):
ad_id, date, hits, referrer, sb_id, F
Число просмотров рекламного объявления используется для записи просмотров и обращений к рекламным объявлениям, а свойство replies_referred используется для записи ответов на эти рекламные объявления.
Обычно я бы использовал следующий запрос для суммирования количества объявлений, просмотров и кликов по рефереру
select referrer, count(distinct ad_id) as Adverts,
sum(case f when 'Y' then hits else 0 end) as clicks,
sum(case f when 'N' then hits else 0 end) as views
from advert_view_hits
where ad_id in ('3325371', '3319035', '3318234')
group by referrer;
, который дает такие результаты, как:
Referrer Adverts Clicks Views
Caterer 3 124 74
Indeed 5 3 24
Но существует несоответствие между двумя таблицами. Ссылки существуют в таблице advert_view_hits, которые не существуют в таблице replies_referred. Поэтому я хочу использовать значения referrer из replies_referred в приведенном выше запросе. Также хотите использовать количество объявлений из таблицы replies_referred.
Но когда я пытаюсь объединить обе таблицы, результаты для кликов и просмотров ошибочны и намного выше, чем должны быть.
select r.referrer, count(distinct r.ad_id) as Adverts,
sum(case a.f when 'Y' then hits else 0 end) as clicks,
sum(case a.f when 'N' then hits else 0 end) as views
from replies_referred r
join advert_view_hits a on a.ad_id = r.ad_id
where r.ad_id in ('3325371', '3319035', '3318234')
group by r.referrer;
, который дает такие результаты, как:
Referrer Adverts Clicks Views
Caterer 3 5473 49730
Indeed 5 234 111
Я пытался использовать подзапросы для получения кликов и просмотров, но это приводит к ORA-00979: не к ошибкам выражения GROUP BY.
Как мне объединить обе таблицы и правильно суммировать просмотры и клики?
пример данных из advert_view_hits: