MySQL查詢連續幾天的資料

2021-10-14 15:33:34 字數 1086 閱讀 1950

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)就是2023年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的日期是2023年的1月2號、3號、4號就是連續的幾天

mysql查詢資料是否連續增長

記錄一次比較查詢,需求是比較內容是否一次比一次高,用來作為標籤依據 大致問題如下 簡化 班級中有若干人,若干次考試。需要查詢某人在考試時成績越來越好 分數是每次都有增長 思路 1。使用group by 分組,然後在查詢內容使用 group concat 成績字段 order by 時間或者自增長id...

mysql查詢日期補全(連續)方法

select od.date,od.ordercount from select date format order time,y m d date,count ordercount from order where order time 開始時間 and order time 結束時間 group...

017 mySQL多表查詢(連續查詢) 分類

一 概念 笛卡爾積 有兩個表a b,取這兩個表所有有可能組成情況。笛卡爾積會產生很多無用資料,需要消除無用資料。二 分類 1 內連線 2 外連線 3 交叉連線 子查詢 說明 sql分92版本和99版本,92版本值包含 1 內連線 而99版本包含上面所有,且99版本的 1 內連線 於92版本有所不同 ...