我正在尝试获取上个月进行过交易并且本月到目前为止已经回来的用户总数。
目前,我的代码可以正常工作,但无法汇总唯一用户 ID 的计数。这是我的东西
SELECT * from
(
SELECT tx_date, count(distinct user_id)
from (
SELECT p.user_id, date(min(p.timestamp)) tx_date
from purchase p
where date(timestamp) between '2018-04-01' and '2018-04-30'
and user_id in (SELECT * from analytics_march_mau)
group by 1) b
group by 1) t1
JOIN (
select distinct date(timestamp) dates
from purchase
where date(timestamp) between '2018-04-01' and '2018-04-30') a
on a.dates >= t1.tx_date
group by 1
这给了我以下结果
现在的问题是我需要将查看的数据更改为仅返回第二列的 tx_date 和总和
这应该改变
SELECT * from
类似的东西
SELECT dates, SUM(count)
但是当我尝试这个时,我得到一个错误“'字段列表'中的未知列'计数'” 我不知道那个专栏叫什么
PS:我是从一个 friend 那里得到这个查询的想法,如果有更简单的方法来完成这个,我很乐意尝试。
最佳答案
我删除了很多嵌套查询。我有一个 SQLFiddle在不使用参数 user_id in (SELECT * from analytics_march_mau)
SELECT COUNT(distinct user_id), DATE_FORMAT(timestamp, "%Y-%m") as date
FROM purchase
WHERE year(timestamp)=2018 AND month(timestamp)=4
AND user_id in (SELECT * FROM analytics_march_mau);
在不测试我遗漏的部分的情况下,我相信这会对您有所帮助。
您可以改进您的问题的领域是格式化您的查询。添加一段数据而不是照片。如果可能,还提供一个 SQLFiddle。
关于MySQL 获取上个月的留存用户数(SUM 问题),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49742704/