关于SQL中,连续天数问题的求解

关于SQL中,连续天数问题的求解

前言

这是我第一篇在CSDN的博客,一直想写文章好久了,可是总是迟迟不下笔,今天逼着自己写,希望记录下自己的学习过程。我个人是IT行业从业者,岗位和数据相关,技术薄弱,文中要是有哪里不足的地方,还请各位朋友斧正,共同进步,万分感谢!我个人的邮箱: 286620584@qq.com。

问题的开始是朋友那天问了我一道SQL题目,大意是想要取出连续n天销售额都满足>m的销售人员。我想了想,这道问题蛮有意思的,核心问题是对"连续"这一事实的界定。

问题的求解

求解思路如下:
1 将数据按照天数排序,并利用数据库row_number()函数为销售人员的销售记录编号排序。
2 用当前时间减去随意给定的一个时间,得到一个日期间差值,在这里为了表述方便,我们可以记这个差值为subtraction1。这里减去的这个日期是可以随意指定的,但是个人认为最好取今天now会好一些。
3 利用步骤1中,得到的row_number列,减去2中的差值subtraction1,即可得到另一列的差值subtraction2。
4 根据cust_id,和列subtraction2分组,即可得到每个人员的连续天数。

首先新建实验要用到的数据表,这张表有三个字段。销售人员的id,即cust_id(习惯这么取名字了,工作中全是cust_XXX);销售日期,date_col。销售金额,sell_amount。

建表语句如下:

drop table if exists consecutive_task ;
create table consecutive_task
(cust_id varchar(10),date_col date,sell_amount int,primary key(cust_id,date_col)
)
;insert into consecutive_task values('c001','2019-01-01','100');
insert into consecutive_task values('c001','2019-01-03','20');
insert into consecutive_task values('c001','2019-01-04','76');
insert into consecutive_task values('c001','2019-01-05','80');
insert into consecutive_task values('c001','2019-01-06','75');
insert int


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部