我想找出每个加入的用户的平均购买量,比如三月的4个月和6个月。答案应该给我两个数字
表1(用户)列:
user_id
date_joined表2(采购)栏:
purchase_id
purchase_amount
purchase_date
user_id我的最初代码是:
SELECT U.USER_ID, AVG(PURCHASES.PURCHASE_AMOUNT)
FROM USERS U
INNER JOIN PURCHASES P
ON U.USER_ID = P.USER_ID
WHERE P.PURCHASE_DATE >= U.DATE_OF_JOIN AND MONTH(P.purchase_date) = 03
AND P.PURCHASE_DATE < DATE_ADD(U.DATE_OF_JOIN, INTERVAL 6 MONTH)
GROUP BY U.USER_ID;问题是,它给了我每个用户的avg (我有20个用户,所以它给了我20个号码)。当我需要两个时,这段代码只包含一个间隔,但不知道如何包含它。
发布于 2018-09-09 01:47:27
不确定我是否理解得很好,但你可以通过“联合”两个查询来完成,一个是4个月,另一个是6个月。
而且,如果您希望每个持续时间都有一个值,则不需要按用户分组。
查询应该类似于:
SELECT 4 as months, AVG(PURCHASES.PURCHASE_AMOUNT) as average_amount
FROM USERS U
INNER JOIN PURCHASES P
ON U.USER_ID = P.USER_ID
WHERE P.PURCHASE_DATE >= U.DATE_OF_JOIN AND MONTH(P.purchase_date) = 03
AND P.PURCHASE_DATE < DATE_ADD(U.DATE_OF_JOIN, INTERVAL 4 MONTH)
union all
SELECT 6 as months, AVG(PURCHASES.PURCHASE_AMOUNT) as average_amount
FROM USERS U
INNER JOIN PURCHASES P
ON U.USER_ID = P.USER_ID
WHERE P.PURCHASE_DATE >= U.DATE_OF_JOIN AND MONTH(P.purchase_date) = 03
AND P.PURCHASE_DATE < DATE_ADD(U.DATE_OF_JOIN, INTERVAL 6 MONTH)
GROUP BY U.USER_ID;https://stackoverflow.com/questions/52240135
复制相似问题