2011-02-23 37 views
0

我不知道這個概念可能更高 - 也許在一個存儲過程?MySQL的 - 請讓記錄,如果最後一個記錄是比以前

考慮兩行的表:

`id` (int) | `value` (int) | `date` (datetime) 

可以說,這些行存在:

1 | 3 | 2011-02-18 
2 | 5 | 2011-02-19 
3 | 12 | 2011-02-20 
4 | 7 | 2011-02-21 
5 | 8 | 2011-02-22 
6 | 10 | 2011-02-23 

我想找到的趨勢,這是相當明顯的人眼識別,最後每天有三個值正在增加:7 - > 8 - > 10.是否有可能獲得保留在此模式中的行?我想存儲過程可能能夠順序讀取行並找到第一個模式(10> 8),然後繼續檢查,直到它不再符合該概念: (8> 7),但不是(7> 12),所以它會停止。

在正確的方向任何意見將是非常有益的。

+0

你能對你以後詳細點嗎?順序增加的連續日數?理想情況下,您沒有一些RBAR方法在Oracle中獲得結果 – Matthew 2011-02-23 19:40:58

+0

,您可以使用LEAD或LAG函數來檢查以前或以後的行。 – Randy 2011-02-23 20:03:41

+0

@馬修 - 這些數字反映了統計數據。我試圖找出統計數據已經上漲了多久或下降了多長時間 – 2011-02-23 20:13:18

回答

1
set @was:=null; 

select id from 
(
    select 
    id, 
    @was as was, 
    value as now, 
    (@was:=value) 
    from the_table order by date 
) as trends 
where was is not null and now<=was limit 1; 
+0

玩過之後,我已經把它關閉了,無論如何,它只能找到第一個趨勢?現在它發現了它們,這很好,但我只需要最後一個。 – 2011-02-23 23:04:58

+0

order by desc,限制1? – ajreal 2011-02-24 05:46:24

+0

獲得第一個記錄,而不是第一個趨勢 - 我想知道是否有辦法獲得第一個趨勢 – 2011-02-24 18:20:54

相關問題