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)
使用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)
使用LEAD
andLAG
会更具可读性,但它们可以从SQL Server 2012+
.