如何寻找股票转折点

Mah*_*IBM 1 sql stockquotes financial sql-server-2008

让我知道如何在 SQL 中查找股票数据中的转折点。例如我们有以下数据列和 N 行:

Date     |Price|
20150101 | 100  |
20150102 | 50   |
20150103 | 80   |
     .
     .
     .
201708027 | 200  |
Run Code Online (Sandbox Code Playgroud)

我想找到转折点(日期和价格),为了清楚地理解,请检查下图。请帮助我如何找到红点。 样本

Luk*_*zda 5

使用SELF JOIN

SELECT cur.*
FROM tab cur
JOIN tab prev
  ON cur.date = prev.date + 1
JOIN tab next
  ON cur.date = next.date - 1
WHERE cur.price > prev.price AND cur.price > next.price;   -- peak
-- WHERE cur.price < prev.price AND cur.price < next.price; -- bottom
Run Code Online (Sandbox Code Playgroud)

使用LEADandLAG会更具可读性,但它们可以从SQL Server 2012+.