2017-05-26 82 views
-1

我有一個問題。我想寫Oracle查詢,其基於從圖像數據甲骨文 - 按類別分組,日期範圍

enter image description here

將創建結果數據庫:

START_DATE   |END_DATE   |COLOR 
-------------------|-------------------|------ 
2017-05-25 15:39:39|2017-05-25 15:41:06|GREEN 
2017-05-25 15:41:06|2017-05-25 15:53:27|ORANGE 
2017-05-25 15:53:27|2017-05-25 15:57:16|GREEN 
2017-05-25 15:57:16|2017-05-25 15:59:24|YELLOW 

等您正在嘗試...

+2

請張貼數據格式的文本,[不截圖](http://meta.stackoverflow.com/questions/285551/why-may-i-not-upload-images-of-code-on-so-when -asking-A-問題/ 285557#285557)。另外,你到目前爲止嘗試過什麼? – Aleksej

回答

3

找到相鄰的值。一種方法使用行號的差異:

select min(start_date) as start_date, max(start_date) as end_date, color 
from (select t.*, 
      row_number() over (order by start_date) as seqnum, 
      row_number() over (partition by color order by start_date) as seqnum_c 
     from t 
group by (seqnum - seqnum_c), color; 

解釋爲什麼行號差異起作用有點具有挑戰性。我鼓勵你運行子查詢並盯着數字。你應該能夠明白爲什麼相鄰顏色值的差異是恆定的。

+0

這種技術是知道的[tabibitosan(http://rwijk.blogspot.co.uk/2014/01/tabibitosan.html) – Boneist

+0

而不是回答同一個問題無數次 - 下一次你可以回去通過你的以前的答案,並找到重複並標記問題。 – MT0

+0

參考你的答案,有些事情是錯誤的。我沒有像結束日期那樣的東西,在數據庫中我只有關於開始日期的記錄。我在兩條線之間做出了區別(滯後),看看在機器上做些細節需要多長時間。另外,「group by」是整個查詢還是隻選擇「t」? –