Мне нужно сделать анализ на уровне пользователя. Поскольку данные имеют много разных строк на пользователя (связанных с разными событиями), мне нужно сгруппировать по пользователю и создать несколько вычисляемых полей, которые представляют разные строки. Одним из полей является подсчет количества дней с момента последней покупки пользователя (сегодня - последняя дата покупки). Я уже пробовал много разных кодов, а также провел много исследований, но не смог найти решение.
Ниже приведены коды, которые для меня более понятны, но не работают:
Использование случая, когда утверждение
SELECT CASE WHEN LAST(tr_orderid <> "") THEN
DATEDIFF(CURRENT_DATE(),event_date) ELSE NULL END AS recency_lastbooking
FROM df
GROUP BY domain_userid
Использование оператора IF
SELECT IF(LAST(tr_total > 0), DATEDIFF(CURRENT_DATE(),event_date), NULL)
AS recency_lastbooking
FROM df
GROUP BY domain_userid
Я получаю ошибку: Выражение 'event_date' отсутствует в списке GROUP BY
Я думаю, что если я использую LAST (event_date), запрос вернет последнюю дату во всех строках определенного пользователя, а не в последний день, когда у пользователя произошло событие покупки.
P.S: я могу использовать tr_total (общая транзакция)> 0 или tr_orderid (идентификатор заказа транзакции) <> ""
Спасибо!