狠狠色丁香婷婷综合尤物/久久精品综合一区二区三区/中国有色金属学报/国产日韩欧美在线观看 - 国产一区二区三区四区五区tv

LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發(fā)文檔 其他文檔  
 
網(wǎng)站管理員

SQL常用算法-判斷數(shù)據(jù)是否連續(xù)

admin
2024年3月30日 12:59 本文熱度 641

常見場景

     經(jīng)常會遇到一些分析連續(xù)次數(shù)類的需求,會需要對數(shù)據(jù)判斷是否連續(xù),比如“用戶是否連續(xù)登入" ,“最多連續(xù)點(diǎn)擊次數(shù)”等等。

     對于連續(xù)2次,連續(xù)3次這種固定的連續(xù)次數(shù)的需求,我們可以通過自關(guān)聯(lián)數(shù)據(jù)表(join)2次或者3次或者lead/lag開窗函數(shù)實(shí)現(xiàn)。

     而對于不確定連續(xù)次數(shù)的需求,比如連續(xù)出現(xiàn)100次,總不能進(jìn)行100次自關(guān)聯(lián)或者寫100個函數(shù),因此我們可以增加輔助列的方式判斷是否連續(xù),我們可以通過整體自然排序-分組排序的做法進(jìn)行判斷

示例

我們直接引用某網(wǎng)站上的示例數(shù)據(jù):有Logs表包含id列和num列

需求:查詢所有至少連續(xù)出現(xiàn)三次的數(shù)字

具體數(shù)據(jù)如下:

Logs 表:
+----+-----+
| id | num |
+----+-----+
| 1  | 1   |
| 2  | 1   |
| 3  | 1   |
| 4  | 2   |
| 5  | 1   |
| 6  | 2   |
| 7  | 2   |
+----+-----+


1.通過自關(guān)聯(lián)方式實(shí)現(xiàn)

SELECT DISTINCT

     l1.NUM

FROM

    LOGS l1,

    LOGS l2,

    LOGS l3                --判斷連續(xù)出現(xiàn)三次,因此自關(guān)聯(lián)三次

WHERE

    l1.Id = l2.Id - 1       ---自關(guān)聯(lián)上下級數(shù)據(jù)

    AND l2.Id = l3.Id – 1

    AND l1.NUM= l2.NUM

    AND l2.NUM= l3.NUM

2.lead/lag函數(shù)方法實(shí)現(xiàn)

SELECT DISTINCT NUM FROM (
  SELECT  ID,
          NUM,
          LAG(NUM,1) OVER(ORDER BY ID) LAG,
          LEAD(NUM,1) OVER(ORDER BY ID) LEAD
  FROM LOGS) T
WHERE  NUM=LAG AND NUM = LEAD  --通過偏移+1/-1行數(shù)據(jù)判斷是否連續(xù)

3.通過增加輔助列方式判斷連續(xù)

分別增加需要判斷組內(nèi)的自增長列以及分組增長列

核心思路:對于連續(xù)的一組數(shù)據(jù),他的自然序列和分組排序序列的差必然相同,通過統(tǒng)計計算這個相同差出現(xiàn)的次數(shù),可以判斷他的連續(xù)性,即同一個差值統(tǒng)計出現(xiàn)2次,則連續(xù)2次,出現(xiàn)3次則為連續(xù)3次

SELECT DISTINCT Num FROM (  SELECT NUM,         COUNT(1as SerialCount   FROM     (SELECT Id,Num,      row_number() over(order by id) -      ROW_NUMBER() over(partition by Num order by Id) as SerialNumberSubGroup     FROM       LOGS     ) as SubGROUP BY Num,SerialNumberSubGroup HAVING COUNT(1) >= 3) as Result --判斷出現(xiàn)的次數(shù)統(tǒng)計


該文章在 2024/3/30 12:59:59 編輯過
關(guān)鍵字查詢
相關(guān)文章
正在查詢...
點(diǎn)晴ERP是一款針對中小制造業(yè)的專業(yè)生產(chǎn)管理軟件系統(tǒng),系統(tǒng)成熟度和易用性得到了國內(nèi)大量中小企業(yè)的青睞。
點(diǎn)晴PMS碼頭管理系統(tǒng)主要針對港口碼頭集裝箱與散貨日常運(yùn)作、調(diào)度、堆場、車隊(duì)、財務(wù)費(fèi)用、相關(guān)報表等業(yè)務(wù)管理,結(jié)合碼頭的業(yè)務(wù)特點(diǎn),圍繞調(diào)度、堆場作業(yè)而開發(fā)的。集技術(shù)的先進(jìn)性、管理的有效性于一體,是物流碼頭及其他港口類企業(yè)的高效ERP管理信息系統(tǒng)。
點(diǎn)晴WMS倉儲管理系統(tǒng)提供了貨物產(chǎn)品管理,銷售管理,采購管理,倉儲管理,倉庫管理,保質(zhì)期管理,貨位管理,庫位管理,生產(chǎn)管理,WMS管理系統(tǒng),標(biāo)簽打印,條形碼,二維碼管理,批號管理軟件。
點(diǎn)晴免費(fèi)OA是一款軟件和通用服務(wù)都免費(fèi),不限功能、不限時間、不限用戶的免費(fèi)OA協(xié)同辦公管理系統(tǒng)。
Copyright 2010-2025 ClickSun All Rights Reserved