1. 程式人生 > >任意相鄰時間段數據獲取

任意相鄰時間段數據獲取

sql提取任意兩個時段內數據

通過sql語句獲取相鄰時段數據不比通過其它編程語言,因為sql裏面沒有for循環,故在實現時需要增加一份副表數據,這裏對該方法做一個記錄。
背景:獲取2017年全年平臺用戶進出貴州省的次數(分為進港次數和出港次數)。
處理方式:
1.根據定位數據獲取當年在貴州出現過的用戶
2.獲取這些用戶的全部定位數據,並根據定位時間進行排序
技術分享圖片
如上,從左到右以此分別為用戶id,定位時間,定位省份id,排序編號,是否定位在貴州
3.這裏考慮根據if_loc這個字段來判斷用戶是入港還是出港,但是僅僅依靠這張a表還無法完全實現,因此考慮增加一張b表,b表的數據來自於a表,但兩張表對rn值對應的數據會有一些差別
技術分享圖片
其中 b.rn_b = a.rn - 1
4.兩張表進行關聯,獲取進港、出港標簽port_flag

select a.bid,a.uploadtime,a.province_id,b.if_loc_b - a.if_loc port_flag
from  a
inner join  b on (a.bid = b.bid and a.rn = b.rn_b)

當port_flag = 1 時為入港,port_flag = -1 時為出港,port_flag = 0時為港內持續定位。

入港和出港涉及到兩個時段的定位數據,通過這種方式,自然也可以獲取到兩個時段內的其它數據。

任意相鄰時間段數據獲取