熱線電話:13121318867

登錄
首頁大數據時代時間段重疊問題,如何用SQL求解?
時間段重疊問題,如何用SQL求解?
2020-08-07
收藏

學習SQL的過程中,大家不僅要學習理論知識,更要結合實際案例進行操作,小編今天就給大家帶來一篇關于用SQL求解時間段重疊問題的文章,希望對于大家學習和使用SQL有所幫助。

文章來源: SQL數據庫開發

作者: 丶平凡世界

問題描述

時間重疊指上下兩行數據的時間段有重疊部分,現在要找出這些在時間上有重疊的記錄。

具體問題

有7個會議室,每個會議室每天都有人開會,某一天的開會時間如下:

查詢出開會時間有重疊的是哪幾個會議室?上面預期結果是 ID 2 3 4 5 6

問題分析

為了方便分析,我們畫了如下一個草圖來具體描述。

圖中上面部分t和下面部分b有一段是重復的,分別是b.starttime到t.endtime部分。通過數學集合的思想,我們可以得出這個重疊部分的集合關系。

t.starttime<=b.endtime

AND t.endtime>=b.starttime

上面這個數學集合的重疊部分就是我們要的找的。

具體解法

--創建測試數據
WITH Meeting AS(
SELECT 1 ID,'08:00' Starttime,'09:15' Endtime
UNION ALL
SELECT 2,'13:20','15:20'
UNION ALL
SELECT 3,'10:00','14:00'
UNION ALL
SELECT 4,'13:55','16:25'
UNION ALL
SELECT 5,'14:00','17:45'
UNION ALL
SELECT 6,'14:05','17:45'
UNION ALL
SELECT 7,'18:05','19:45')

--查詢代碼
SELECT DISTINCT b.* FROM Meeting t
JOIN Meeting b ON 
t.Starttime<=b.Endtime
AND t.Endtime>=b.Starttime
AND b.ID <> t.ID --排除與自身時間相等的值

結果如下:

有興趣的小伙伴可以動手做一下,興許下次面試就遇到了。


原文鏈接:https://mp.weixin.qq.com/s/Sqt2o2ut3JL1hrPHGDPGcQ

SQL

數據分析咨詢請掃描二維碼

若不方便掃碼,搜微信號:CDAshujufenxi

數據分析師資訊
更多

OK
客服在線
立即咨詢
日韩人妻系列无码专区视频,先锋高清无码,无码免费视欧非,国精产品一区一区三区无码
客服在線
立即咨詢