日期有重叠,计算日期内无活动或有活动的天数,不是连续登录问题哦

本文介绍了一种使用SQL递归构建日期范围表的方法,通过该表可以统计品牌在指定时间段内的活动连续性和间断天数。适用于多个品牌的统计需求。

create table brands(
brand varchar2(50),
st date,
et date
);
insert into brands values('华为',date'2020-2-25',date'2020-2-28');
insert into brands values('华为',date'2020-2-27',date'2020-3-3');
insert into brands values('华为',date'2020-3-5',date'2020-3-8');
insert into brands values('华为',date'2020-2-20',date'2020-2-22');
insert into brands values('华为',date'2020-2-24',date'2020-2-27');
insert into brands values('华为',date'2020-2-26',date'2020-3-2');
insert into brands values('华为',date'2020-3-2',date'2020-3-3');
insert into brands values('华为',date'2020-3-4',date'2020-3-6');
commit;


--查询表格中,不活动时间,分别是多少天。
select * from brands;

with daylists as (
SELECT (select min(st) from brands) + ROWNUM - 1 as daylist           --连续天
FROM DUAL
CONNECT BY ROWNUM <=(select max(et) from brands) -  
(select min(st) from brands) + 1)

select brand,max(daylist)-min(daylist) + 1 -count(1) from
(select brand,daylist from daylists,brands where daylist
between st and et group by brand,daylist
order by brand,daylist)
group by brand;

这里不是连续登录了,只能用递归去构建一个范围日期表,然后在这张表上有活动的记录,无活动的不记录,再统计这张表的记录信息,就得出结果了,这里做了分组,适合多个品牌的返回结果哦

评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值