我第二次嘗試問這個問題,希望這個例子更簡單,我的問題更清晰...MySQL查詢選擇基於前N行值的行
我只是想查詢股票代碼最近的價格大於其之前的N行價格(按日期排序,但日期不連續)。對於這個例子,我們將設置N = 5,所以比較價格與前面5行的價格。
出來應該是符號,最近的日期,價格,價格n行前,日期n行前。
這裏是架構/數據的鏈接... http://sqlfiddle.com/#!2/bbb54/2
輸出應該是這樣的:
Symbol, Price, Date, Price5RowAgo, Date5RowsAgo
AA 16.37 2014-11-06 16.22 2014-10-11
ADT 36.07 2014-11-05 35.19 2014-10-23
AEO 13.82 2014-11-03 12.86 2014-10-07
(注意,AFA不是結果,因爲它不符合條件)
如果讀取有關使用前一行值的許多問題/解決方案,但似乎無法使其中的任何一個適用於此特定情況。任何幫助和建議非常感謝!
謝謝你這...這讓我開始。我注意到,在2個子查詢中,我們需要將「DESC」添加到order-by子句以獲取正確的日期。您的查詢會獲得全部4個符號,而我需要的是將最近的價格與N天前的價格(本例中爲5)進行比較。 'HAVING PRICE> previousPrice'條款是否可以實現這一目標?我嘗試了sqlfiddle,但得到這個sql錯誤。 – Paul
經過一番修補,我想我已經得到它... – Paul
[code] SELECT *, (SELECT p2.'DATE' FROM PRICES as p2 WHERE p2.'SYMBOL' = p1.'SYMBOL' ORDER BY p2。 'DATE' DESC LIMIT 5,1)as previousDate, (SELECT p2.'PRICE' FROM PRICES as p2 WHERE p2.'SYMBOL' = p1.'SYMBOL' ORDER BY p2.'DATE' DESC LIMIT 5,1)as previousPrice FROM價格爲P1 GROUP BY p1.'SYMBOL' HAVING PRICE> PREVIOUSPRICE ORDER BY p1.SYMBOL ASC,p1.DATE DESC [代碼] – Paul