gpt4 book ai didi

mysql - 如何使用开始日期和特定时间段查找每个用户的平均数

转载 作者:行者123 更新时间:2023-11-29 17:01:11 24 4
gpt4 key购买 nike

我想了解 3 月份加入的用户在 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;

问题是它给了我每个用户的平均值(我有 20 个用户,所以它给了我 20 个数字)。当我需要两个间隔但不知道如何包含它时,此代码仅包含一个间隔。

最佳答案

不确定我是否理解得很好,但您可以通过“联合”两个查询来做到这一点,一个查询 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;

关于mysql - 如何使用开始日期和特定时间段查找每个用户的平均数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52240135/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com