【问题标题】:How to get distinct users with daily transactions如何通过日常交易获得不同的用户
【发布时间】:2018-02-13 05:21:10
【问题描述】:

我有两个表用户和事务,其中事务表具有用户 ID

用户 ID |用户名

交易ID |用户名 |交易日期

我需要获取在某个时间范围内每天进行交易的不同用户的数量,即在某个时间范围内每天都有 txns 的用户。

我可以每天获得不同的用户,

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。

【问题讨论】:

  • 该列是否真的命名为TransactioDateTransaction 末尾没有n)?

标签: mysql report reporting


【解决方案1】:

加入一个子查询,计算每个用户进行交易的不同天数,并返回该计数与时间段内的天数相同的天数。

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

【讨论】:

    猜你喜欢
    • 2022-07-20
    • 2018-06-09
    • 1970-01-01
    • 2023-01-14
    • 2011-10-20
    • 2013-05-26
    • 2015-10-28
    • 1970-01-01
    • 2015-02-13
    相关资源
    最近更新 更多