sql - SQL查询查找客户第一次和第二次购买之间的平均天数?
问题描述
我有一个包含以下列的表格,需要一个查询来查找客户第一次和第二次购买之间的平均天数。
表名 Customer_purchases:
客户ID| 购买ID| 时间戳| 数量
字段名| 数据类型| 描述
customer_id|int|每个客户的唯一 ID
purchase_id|int|每次购买的唯一 ID
时间戳 | 日期时间 | 购买时间戳
金额 | 浮动| 客户为购买支付的金额
有什么建议么 ?
解决方案
获取每个客户的第一次购买 [min(timestamp)],然后加入子查询,获取时间戳 > 第一个的 min(timestamp)。
;with first_purchase as
(
select
customer_id,
min(timestamp) as DateOfFirstPurchase
from
Customer_purchases
group by
customer_id
)
select
first_purchase.customer_id,
first_purchase.DateOfFirstPurchase,
second_purchase.DateOfSecondPurchase,
datediff(dd, first_puchase.DateOfFirstPurchase, second_purchase.DateOfSecondPurchase) as NumDaysBetween
from
first_purchase fp
inner join
(
select
cp2.customer_id,
min(timestamp) as DateOfSecondPurchase
from
dbo.Customer_purchases cp2
inner join first_purchase fp on cp2.customer_id = fp.customer_id
where
cp2.timstamp > fp.DateOfFirstPurchase
group by
cp2.customer_id
) second_purchase on fp.customer_id = second_purchase.customer_id
这将为您提供所有原始数据,然后根据需要进行平均。
推荐阅读
- regex - 重定向语法
- ansible - Ansible Tower:将额外变量从一个工作流模板传递到另一个
- oauth - 在 DocuSign 中使用 JWT 时无法在会话错误中找到 OAuth 发起程序参数 - Servicenow 集成
- gatsby - Gatsby - Prismic 站点在构建时中断
- python - .exe 上的图表与 Spyder 上的图表看起来不一样
- javascript - React.js:如何仅在观看滚动位置后调用函数
- python - 将数据框导入另一个脚本
- python - 如何循环更新图形?
- anylogic - 如何在代理群体中创建代理群体
- javascript - 如何通过 JQuery 修复 CWE 117(不正确的日志输出中和)