我很难找到以下任务的查询
我有以下数据,想要查找每个唯一ID的总网络日
ID From To NetworkDay
1 03-Sep-12 07-Sep-12 5
1 03-Sep-12 04-Sep-12 2
1 05-Sep-12 06-Sep-12 2
1 06-Sep-12 12-Sep-12 5
1 31-Aug-12 04-Sep-12 3
2 04-Sep-12 06-Sep-12 3
2 11-Sep-12 13-Sep-12 3
2 05-Sep-12 08-Sep-12 3
Run Code Online (Sandbox Code Playgroud)
问题是日期范围可能重叠,我无法想出能给我以下结果的SQL
ID From To NetworkDay
1 31-Aug-12 12-Sep-12 9
2 04-Sep-12 08-Sep-12 4
2 11-Sep-12 13-Sep-12 3
Run Code Online (Sandbox Code Playgroud)
然后
ID Total Network Day
1 9
2 7
Run Code Online (Sandbox Code Playgroud)
如果无法进行网络日计算,只需到第二个表即可.
希望我的问题很明确
小智 0
如何构建一个 SQL,通过删除漏洞并仅考虑最大间隔来合并间隔。它是这样的(未测试):
SELECT DISTINCT F.ID, F.From, L.To
FROM Temp AS F, Temp AS L
WHERE F.From < L.To AND F.ID = L.ID
AND NOT EXISTS (SELECT *
FROM Temp AS T
WHERE T.ID = F.ID
AND F.From < T.From AND T.From < L.To
AND NOT EXISTS ( SELECT *
FROM Temp AS T1
WHERE T1.ID = F.ID
AND T1.From < T.From
AND T.From <= T1.To)
)
AND NOT EXISTS (SELECT *
FROM Temp AS T2
WHERE T2.ID = F.ID
AND (
(T2.From < F.From AND F.From <= T2.To)
OR (T2.From < L.To AND L.To < T2.To)
)
)
Run Code Online (Sandbox Code Playgroud)