SELECT DATE_FORMAT(created_at, '%Y-%m') AS month,
AVG(total_amount/count) AS average_subscription_amount
FROM
(SELECT SUBSTRING_INDEX(order_id, '_', 1) AS subscription_id,
SUM(total_amount) AS total_amount,
COUNT(DISTINCT SUBSTRING_INDEX(order_id, '_', 2)) AS count,
created_at
FROM subscription_orders
GROUP BY subscription_id, YEAR(created_at), MONTH(created_at)
) AS subscriptions
GROUP BY month
ORDER BY month;
其中,subscription_orders为包含订阅订单信息的表,包括order_id(订单号)、total_amount(订单金额)、created_at(订单创建时间)等信息。
解释一下代码:
首先,我们使用SUBSTRING_INDEX函数将order_id拆分为subscription_id和订阅月份。
我们将订阅金额、订阅数量和订阅月份分组,计算每个订阅月份的平均订阅金额。这里使用了SUM和COUNT函数计算总金额和总数量。
最后,我们按月份对平均订阅金额进行排序,并将其输出。
注意,我们使用了DATE_FORMAT函数将created_at的时间戳格式化为YYYY-MM的字符串格式,以便按月份分组和排序。
上一篇:按年/月计数和分组数据