Мне нужно считать количество событий, совершаемых каждым пользователем за день.Для этого мне нужно объединить две таблицы, где одна таблица содержит идентификатор пользователя и дату для каждого события, а другая таблица содержит календарь с каждой датой.
Я попробовал первый для уникального идентификатора пользователя, но вывод для delta_day равен 0:
with a1 as (SELECT DISTINCT buyer_account_id_fk,
event_date,
count(event_date) as qtide,
min(event_date) as first_event
FROM ods.ad_contacts
WHERE buyer_account_id_fk = 14954020
and year = 2018
GROUP BY 1,2
LIMIT 1000),
a2 as (select distinct buyer_account_id_fk,event_dt, qtide,
date_diff('day', first_event,event_dt) AS delta_day
from a1
RIGHT JOIN ods.calendar AS cal ON a1.event_date = cal.event_dt
limit 1000)
select buyer_account_id_fk, delta_day, qtide
from a2
group by 1,2,3
BUYER_ACCOUNT_ID_FK DELTA_DAY QTIDE
14,954,020 0 15
14,954,020 0 8
14,954,020 0 1
14,954,020 0 22
14,954,020 0 5
14,954,020 0 9
Я понял, что проблеманаходится в определении min (event_date) , в котором для того же user_id результат совпадает с event_date , из-за этого delta_day равно 0, но я не знаю, как это исправить.
Пожалуйста, помогите мне !!
Таблица: ods.ad_contacts
BUYER_ACCOUNT_ID_FK EVENT_DATE
14,954,020 03/01/18
14,954,020 06/01/18
14,954,020 06/01/18
14,954,020 08/01/18
Таблица: ods.calendar
EVENT_DT
01/01/18
02/01/18
03/01/18
04/01/18
05/01/18
06/01/18
07/01/18
08/01/18
Я ожидаю в результате что-то вроде:
buyer_account_id_fk delta_day qtide
14,954,020 0 1
14,954,020 3 2
14,954,020 5 1