欧美成人精品手机在线观看_69视频国产_动漫精品第一页_日韩中文字幕网 - 日本欧美一区二区

LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發文檔 其他文檔  
 
網站管理員

SQL連續數據的查詢,查詢最大連續簽到的時長、查詢連續人流量超過2w的日期。

freeflydom
2024年8月2日 15:15 本文熱度 1329
場景

場景一:需要查詢最大連續簽到的時長,一般用于toc的場景中
場景二:查詢連續人流量超過2w的日期,某游樂場的業務管理系統

思路

這種題目我一般常用的思路就是動轉靜,連續轉不變。
比如場景二,需要找連續的日期,那么就要再找一個連續的變量,讓兩個變量進行相減或者其他操作,得到不變的數據,然后通過分組或者分區查詢即可。

例題

體育館人流量表

 

visit_date 是該表中具有唯一值的列。
每日人流量信息被記錄在這三列信息中:序號 (id)、日期 (visit_date)、 人流量 (people)
每天只有一行記錄,id與日期遞增,日期不一定是連續遞增。
編寫SQL找出每天的人數大于或等于 100 且 日期 連續的三行或更多行記錄。返回按 visit_date 升序排列 的結果表

Create table If Not Exists Stadium (id int, visit_date DATE NULL, people int)

Truncate table Stadium

insert into Stadium (id, visit_date, people) values ('1', '2017-01-01', 10)

insert into Stadium (id, visit_date, people) values ('2', '2017-01-02', 109)

insert into Stadium (id, visit_date, people) values ('3', '2017-01-03', 150)

insert into Stadium (id, visit_date, people) values ('4', '2017-01-04', 99)

insert into Stadium (id, visit_date, people) values ('5', '2017-01-05', 145)

insert into Stadium (id, visit_date, people) values ('6', '2017-01-06', 1455)

insert into Stadium (id, visit_date, people) values ('7', '2017-01-07', 199)

insert into Stadium (id, visit_date, people) values ('8', '2017-01-09', 188)

例題解釋

體育館的人流表,要求找出最少三天連續人流量超過100的數據,并且按照
visit_date升序排序。

實戰

做題目前先回顧下SqlServer中的一個函數

DATEADD(DAY,2,'2020-03-27');

該函數可以在日期上進行加減,并且可以執行加減的日期部分,DAY表示天數增加。

按照思路,日期連續,那么可以生成一列行號,用日期與行號作差,如果結果相等則表示連續。

解題 生成行號

需要自己創造動態列,比如自己添加行號列
至于為什么不用ID,id也是遞增的,我們做完再講。

SELECT t1.id,t1.visit_date,t1.people FROM (SELECT t.*, COUNT(1) OVER(partition by DATEADD(DAY, t.rowId * -1,t.visit_date)) AS daysCount FROM(SELECT *,ROW_NUMBER() Over (ORDER BY id) as rowId FROM Stadium where people >= 100) t ) t1 WHERE t1.daysCount > =3

步驟
1.篩選人流量大于等于100的數據,并且通過分區函數增加行號
2.用日期減去行號得到一個日期,相等則表示日期連續,再次通過分區函數基于得到的日期獲取分區數量
3.篩選分區數量大于等于3的就是連續三天或者三天以上人流量大于等于100的數據
4.作為子查詢結果處理得到結果。

結果

為什么不用id還是需要自己創造行號。因為篩選掉人流量不夠的數據后,id與時間的等差結果還是不會變,就會得到錯誤的數據,本身不滿足的數據仍舊會被查詢出來。

轉自https://www.cnblogs.com/qwqwQAQ/p/18334689


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