2017-08-27 4 views
0

Faites-moi savoir comment trouver des points de prix tournant dans les données de stock dans SQL. par exemple, nous avons la suite des colonnes de données et N lignes:Comment trouver des points de prix de rotation des stocks

Date  |Price| 
20150101 | 100 | 
20150102 | 50 | 
20150103 | 80 | 
    . 
    . 
    . 
201708027 | 200 | 

et je veux trouver les points de retournement (date et prix), de comprendre clairement contrôlons suivant image.S'il me aider comment trouver des points rouges. Sample

+0

Souhaitez-vous faire des prévisions? Ensuite, vous recherchez le lissage Holt-Winters-Brown et "l'analyse des points de changement" (car vous avez besoin des points d'inflexion sur la courbe lissée pour filtrer le bruit). – Koshinae

+0

@Koshinae En fait, je cherche le prix d'achat et de vente passé, puis mettre en œuvre ceux pour le prix des actions futures – MahdiIBM

+0

Vous devez encore lisser la courbe pour trouver les points d'inflexion. – Koshinae

Répondre

2

En utilisant 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 

En utilisant LEAD et LAG sera beaucoup plus facile à lire, mais ils sont disponibles à partir SQL Server 2012+.

+0

Basé sur la question, c'est la bonne réponse. Je serais surpris s'il y a des citations tous les jours. Si oui, le PO doit accepter cette réponse et poser * une autre * question, avec des données d'échantillon plus appropriées et une meilleure explication de ce qu'il faut faire pendant les vacances et les week-ends. –

+0

@ lad2025 merci pour votre réponse, mais ce n'est pas assez précis pour moi. – MahdiIBM