У меня есть две таблицы user (one)
и transaction (many)
, и мне нужно получить среднее время в днях с момента создания пользователя до момента, когда он совершил свою первую транзакцию. Я использую AVG(TIMESTAMPDIFF)
, который работает хорошо, за исключением того, что GROUP BY
возвращает среднее значение для каждого пользователя вместо одного единственного среднего для всех уникальных пользователей в таблице transaction
. Если я удаляю GROUP BY
, я получаю одно среднее значение, но оно учитывает несколько транзакций от пользователей, тогда как я просто хочу иметь по одной на пользователя (первое, что они сделали).
Вот мой SQL:
SELECT AVG(TIMESTAMPDIFF(DAY, u.date_created, t.transaction_date)) AS average
FROM transaction t
LEFT JOIN user u ON u.id = t.user_id
WHERE t.user_id IS NOT NULL AND t.status = 1
GROUP BY t.user_id;
Буду признателен, если кто-нибудь сможет помочь мне получить среднее значение только для уникальных пользователей. Можно разбить запрос на две части, но таблицы большие, поэтому возвращение большого количества данных и их повторное использование не требуется. Заранее спасибо.