求一SQL语句,两次购买时间

来源:百度知道 编辑:UC知道 时间:2024/06/20 12:38:14
会员表
会员名,注册时间

订单表
订单ID,会员名,下单时间

订单明细表
订单ID,产品ID,状态
(某订单有若干产品,状态表示该产品是否成功购买,可能有缺货或成功等状态)

统计 某一时间段注册的用户,第一,二次成功购买(成功购买指订单明细表中状态为5的订单)的时间间隔.

select t.会员名,min(datediff(day,t.下单时间,tt.下单时间)) 天数
from (select t1.会员名,min(t2.下单时间) 下单时间
from 会员表 t1 join 订单表 t2 on t1.会员名=t2.会员名
join 订单明细表 t3 on t2.订单ID=t3.订单ID
where t1.注册时间 between 'lz要的一段注册时间的起始时间' and 'lz要的一段注册时间的截止时间'
and t3.状态=5
group by t1.会员名)t join 订单表 tt on t.会员名=tt.会员名
join 订单明细表 ttt on tt.订单ID=ttt.订单ID
where ttt.状态=5 and t.下单时间<>tt.下单时间
group by t.会员名

select
会员名,datediff(d,b.下单时间,d.下单时间) as 天数
from 会员表 a
inner join 订单表 b on a.会员名=b.会员名
inner join 订单表 d on d.会员名=a.会员名
where
b.订单ID=(select top 1 订单ID from 订单表 where 会员名=b.会员名 order by 下单时间 asc)
and
d.订单ID=(select top 1 订单ID from 订单表 where 会员名=d.会员名 and 订单ID<>b.订单ID order by 下单时间 asc)
and
exists(select 1 from 订单明细表 where 订单ID=b.订单ID and 状态=5)
and
exists(select 1 from 订单明细表 where 订单ID=d.订单ID and 状态=5)

学习,有答案告诉我