计算新用户订阅量MySQL
我有一个数据集,我需要找到新的订户收入 这些订阅者根据其订阅情况每周或每月付费 唯一标识符是“customer”,数据是时间戳级别的,但我希望它在每月级别汇总 现在每个月,我们只需要了解新用户的收入。 基本上,假设客户每月/每周订阅,我们只希望他们的第一笔付款在此计算 这是一个示例数据集和计算新用户订阅量MySQL,mysql,sql,partition,Mysql,Sql,Partition,我有一个数据集,我需要找到新的订户收入 这些订阅者根据其订阅情况每周或每月付费 唯一标识符是“customer”,数据是时间戳级别的,但我希望它在每月级别汇总 现在每个月,我们只需要了解新用户的收入。 基本上,假设客户每月/每周订阅,我们只希望他们的第一笔付款在此计算 这是一个示例数据集和 created customer amount 16-Feb-18 14:03:55 cus_BwcisIF1YR1UlD 33300 16-Feb
created customer amount
16-Feb-18 14:03:55 cus_BwcisIF1YR1UlD 33300
16-Feb-18 14:28:13 cus_BpLsCvjuubYZAe 156250
15-Feb-18 19:19:14 cus_C3vT6uVBqJC1wz 50000
14-Feb-18 23:00:24 cus_BME5vNeXAeZSN2 162375
9-Feb-18 14:27:26 cus_BpLsCvjuubYZAe 156250
……等等
这是最终的期望输出
yearmonth new_amount
Jan - 2018 100000
Feb - 2018 2000
Dec - 2017 100002
这需要在MySQL接口中完成 基本上,您希望将数据过滤到第一个客户。其中一种方法涉及相关子查询 其余的只是按年按月累加。因此,总体而言,查询没有那么复杂,但它确实由两个不同的部分组成:
select year(created) as yyyy, month(created) as mm,
count(*) as num_news,
sum(amount) as amount_news
from t
where t.created = (select min(t2.created)
from t t2
where t2.customer = t.customer
)
group by yyyy, mm
基本上,您希望将数据过滤到第一个客户。其中一种方法涉及相关子查询 其余的只是按年按月累加。因此,总体而言,查询没有那么复杂,但它确实由两个不同的部分组成:
select year(created) as yyyy, month(created) as mm,
count(*) as num_news,
sum(amount) as amount_news
from t
where t.created = (select min(t2.created)
from t t2
where t2.customer = t.customer
)
group by yyyy, mm
这太棒了,谢谢!但问题是,它每个月只选择最短的创建日期,所以很多客户被排除在外。我想为每个客户选择最短的创建日期-考虑到这两个变量,有什么办法吗?@PravinSingh。我不知道您正在运行什么查询,但此查询正在选择每个客户的最小创建日期。非常感谢!但问题是,它每个月只选择最短的创建日期,所以很多客户被排除在外。我想为每个客户选择最短的创建日期-考虑到这两个变量,有什么办法吗?@PravinSingh。我不知道您正在运行什么查询,但此查询正在选择每个客户的最小创建日期。非常感谢!但问题是,它每个月只选择最短的创建日期,所以很多客户被排除在外。我想为每个客户选择最短的创建日期-考虑到这两个变量,有没有关于如何做到这一点的想法?非常感谢!但问题是,它每个月只选择最短的创建日期,所以很多客户被排除在外。我想为每个客户选择最短的创建日期-考虑到这两个变量,有没有关于如何做到这一点的想法?