【问题标题】:I would like to count the number of users who made multiple purchases grouped by month我想按月计算多次购买的用户数量
【发布时间】:2019-05-14 00:38:22
【问题描述】:

所以我在这里想要做的是,我试图计算一段时间内重复用户(下单以上订单的用户)的数量,让它成为月日或年,这种情况这是几个月

我目前正在运行 mysql mariadb,我几乎是 mysql 的初学者,我尝试了多个子查询,但到目前为止都失败了

这是我迄今为止尝试过的..

这将返回所有没有订购计数条件的用户数

由于人们要求提供样本数据,以下是目前数据的样子:

Order_Creation_Date - User_ID - Order_ID

2019-01-01              123         1
2019-01-01              123         2
2019-01-01              231         3
2019-01-01              231         4

这是我用来获取结果的查询,但它不断返回当月的用户总数

select month(o.created_at)month,
year(o.created_at)year,
count(distinct o.user_uuid) from orders o
group by month(o.created_at)
having count(*)>1

这会将用户数返回为 1 ..

select month(o.created_at)month,
year(o.created_at)year,
(select count(distinct ord.user_uuid) from orders ord
 where ord.user_uuid = o.user_uuid 
 group by ord.user_uuid
 having count(*)>1) from orders o
group by month(o.created_at)

预期结果将来自上面的示例数据

Month Count of repeat users
1              2

【问题讨论】:

  • 样本数据和期望的结果会有所帮助。
  • 我认为您需要按年和月分组。正如@Gordon 所说,样本数据会有很大帮助。当您说您发布的查询返回什么时,我不知道您的意思,因为您没有显示它们返回的内容。你只要告诉我们。
  • 没有样本数据集的预期结果是愚蠢的。你可以看到,对吧?我们
  • 大家好,添加了样本数据和样本数据的预期结果

标签: mysql sql mariadb


【解决方案1】:

如果您想要了解 1 月份进行多次购买的用户数量,请进行两个级别的聚合:一个按用户和月份,另一个按月份:

select yyyy, mm, sum( num_orders > 1) as num_repeat_users
from (select year(o.created) as yyyy, month(o.created) as mm,
             o.user_uuid, count(*) as num_orders
      from orders o
      group by yyyy, mm, o.user_uuid
     ) o
group by yyyy, mm;

【讨论】:

    【解决方案2】:

    我认为你应该尝试这样的事情,这将返回 USer_ID 列表 Month 和 Year 明智的,谁在该期间订购了更多 -

    SELECT 
    [user_uuid],
    MONTH(o.created_at) month, 
    YEAR(o.created_at) year, 
    COUNT(o.user_uuid)
    FROM orders o
    GROUP BY 
    MONTH(o.created_at),YEAR(o.created_at)
    HAVING COUNT(*) > 1;
    

    更多信息,如果您正在寻找有多少用户下了超过一个订单的计数,您可以将上述查询作为子查询并计算列“user_uuid”

    【讨论】:

      猜你喜欢
      • 2022-01-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-27
      • 1970-01-01
      • 2021-11-02
      • 1970-01-01
      相关资源
      最近更新 更多