首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用开始日期和特定时间来查找每个用户的AVG

如何使用开始日期和特定时间来查找每个用户的AVG
EN

Stack Overflow用户
提问于 2018-09-08 23:20:28
回答 1查看 34关注 0票数 0

我想找出每个加入的用户的平均购买量,比如三月的4个月和6个月。答案应该给我两个数字

表1(用户)列:

代码语言:javascript
复制
user_id
date_joined

表2(采购)栏:

代码语言:javascript
复制
purchase_id
purchase_amount
purchase_date
user_id

我的最初代码是:

代码语言:javascript
复制
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个号码)。当我需要两个时,这段代码只包含一个间隔,但不知道如何包含它。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-09-09 01:47:27

不确定我是否理解得很好,但你可以通过“联合”两个查询来完成,一个是4个月,另一个是6个月。

而且,如果您希望每个持续时间都有一个值,则不需要按用户分组。

查询应该类似于:

代码语言:javascript
复制
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;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52240135

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档