MySQL查询连续几天的数据

1.按照日期排序,使用rank()函数得到排位值

select userid,date
rank() over(partition by userid order by date) rk
from tableA;

2.用日期减去排位值rk得到新的日期,记作new_date.new_date相同则为连续

举个栗子:

date
2017/1/2 
2017/1/3 
2017/1/4
2017/1/6
2017/1/8
2017/1/9

//求出rank值
select sour_date,
rank() over(order by sour_date) rk
from tablea;

//rank()函数是求排名的函数

date      rk
2017/1/2  1
2017/1/3  2
2017/1/4  3
2017/1/6  4
2017/1/8  5
2017/1/9  6

select sour_date,rk,date_sub(sour_date,rk)new_date from tablea;
//date_sub()函数就是第一个参数(日期)减去第二个参数(天数)得到新的日期
//date_sub(2017/1/2,1)就是2017年1月2号减1天----->2017/1/1

sour_date rk  new_date
2017/1/2  1   2017/1/1
2017/1/3  2   2017/1/1
2017/1/4  3   2017/1/1
2017/1/6  4   2017/1/2
2017/1/8  5   2017/1/3
2017/1/9  6   2017/1/3

//可以看到new_date相同的日期是连续的
//new_date为2017/1/1的日期是2017年的1月2号、3号、4号就是连续的几天

 

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值