我有兩個表user (one)
和transaction (many)
,我需要從用戶創建時間到他們進行第一次交易時的平均時間。我使用的是AVG(TIMESTAMPDIFF)
,它運行良好,但GROUP BY
對transaction
表中的所有唯一用戶返回的是平均值而不是每個用戶的平均值。如果我刪除了GROUP BY
,我會得到一個單一的平均數字,但它考慮到來自用戶的多個交易,而我只想爲每個用戶(他們的第一個用戶)提供一個交易。MySQL的AVG(TIMESTAMPDIFF)與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;
我會很感激,如果有人能幫助我回到平均只有唯一用戶。把查詢分成兩份是很好的做法,但表格很大,所以返回大量數據並將其重新放入是不合格的。提前致謝。
謝謝,這個工程。 s.day不起作用,因爲它是該功能的一部分,但刪除它卻有訣竅。 – Tom
是的,發現它,謝謝。 – Tom