mysql - 如何通过日常交易获得不同的用户

标签 mysql report reporting

我有两个表 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/

相关文章:

php - 使用 PHP 和 mysql Bootstrap 连续 2 张卡

php - 用户名/电子邮件垃圾邮件列表?

php - 在列表中分组 - php

jasper-reports - JasperReports & iReport : Generate a Message or Popup if report of hyperlink is empty

python - 将无数 ODT 文件转换为 PDF 的可靠且快速的方法?

mysql - PHPMyAdmin 更新触发错误

java - 如何定制测试报告?

google-analytics - Microsoft SQL Server报表生成器和Google Analytics(分析)

c# - 如何使用 .net 框架创建我自己的报告控件?

.net - Crystal 报表和 LINQ