1. 程式人生 > 其它 >SQL如何查詢連續數字並且統計連續個數

SQL如何查詢連續數字並且統計連續個數

領導要求抽取一個數據,統計首次達到連續舉績12周的清單,連續舉績12周的意思是連續12周銷售員都有出單。

12次出單不難判斷,難點是如何判斷是否是連續出單。下圖是一個銷售人員的出單記錄,其中第24周出單2次,第26周沒有出單,所以只有14周~25周是滿足連續舉績的要求。

技巧:去掉舉績日期,增加一列lx(周次-行號),我們只要判斷lx是否相同,相同說明是連續。

還有一點要注意,因為24周有2次出單,所以資料要根據工號、姓名、lx_zhou(周次)分組,24周兩次出單要合成一條資料,件數取和。

分組前的圖:

分組後的圖:

具體sql如下:

SET DATEFIRST 1 --設定周從週一開始算
with C as ( --lx_zhou是周次 select sale_no 工號,psnname 姓名,sum(js) 件數,datepart(WK,mio_date) lx_zhou,datepart(WK,mio_date)- row_number() over(partition by sale_no order by sale_no,datepart(WK,mio_date)) lx from shishi_jj2021_all_qxhr where right(left(sale_no,7),1) in ('6','8') group by sale_no,psnname,datepart
(WK,mio_date) --根據工號、姓名、周次分組 ) select 工號,姓名,count(件數) from C group by 工號,姓名,lx having count(件數)>=12 order by 1; --相同的lx值說明是連續的