我有两个表 User 和 transactions,其中 transaction 表有用户 id
UserID | UserName
TransactionID | UserID | TransactioDate
我需要获取某个时间段内每天进行交易的不同用户的数量,即在特定时间段内每天进行交易的用户数。
我每天都可以获得不同的用户,
SELECT t.TransactioDate, COUNT(DISTINCT u.UserID)
FROM user u
INNER JOIN transaction t ON u.UserID = t.UserID AND t.TransactioDate BETWEEN '2018-01-13' AND '2018-02-12'
GROUP BY CAST(t.TransactioDate AS DATE)
ORDER BY t.TransactioDate
但我想知道如何在特定时间段内让用户每天都使用 txns。
最佳答案
将它与一个子查询结合起来,该子查询计算每个用户进行交易的不同天数,并返回此计数与该时间段内的天数相同的天数。
SELECT DATE(t.TransactioDate) AS date, COUNT(DISTINCT u.UserID)
FROM user u
INNER JOIN transaction t ON u.UserID = t.UserID
INNER JOIN (
SELECT userID
FROM transaction
WHERE TransactioDate BETWEEN '2018-01-13' AND '2018-02-12'
GROUP BY userID
HAVING COUNT(DISTINCT(DATE(transactioDate))) = DATEDIFF('2018-02-12', '2018-01-13') + 1
) AS t1 ON t1.userID = u.userID
WHERE t.TransactioDate BETWEEN '2018-01-13' AND '2018-02-12'
GROUP BY date
ORDER BY t.TransactioDate
关于mysql - 如何通过日常交易获得不同的用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48759953/