Wednesday, January 11, 2017

Déménagement Moyenne Sql Serveur 2008

J'essaie d'avoir une colonne moyenne courante dans l'instruction SELECT basée sur une colonne des n lignes précédentes dans la même instruction SELECT. La moyenne que j'ai besoin est basée sur les n lignes précédentes dans le jeu de résultats. Les 3 premières lignes de la colonne Moyenne sont nulles car il n'y a pas de lignes précédentes. La ligne 4 de la colonne Moyenne affiche la moyenne de la colonne Nombre des 3 lignes précédentes. J'ai besoin d'aide pour essayer de construire une instruction SQL Select qui le fera. Une simple auto jointure semblerait beaucoup mieux qu'une ligne référençant la sous-requête. Génère 10k lignes de données de test: Je tirerais le cas particulier des 3 premières lignes de la requête principale, tu peux UNION TOUTES celles de retour si tu veux vraiment Il dans l'ensemble de rangées. Question d'auto-jointure: Sur ma machine cela prend environ 10 secondes, l'approche de sous-requête que Aaron Alton a démontrée prend environ 45 secondes (après que je l'ai changée pour refléter ma table de source de test): Si vous faites un PROFIL de STATISTIQUES de SET SUR, Self join a 10k s'exécute sur la bobine de table. La sous-requête a 10k s'exécute sur le filtre, agrégat et autres steps. I fonctionnent avec SQL Server 2008 R2, en essayant de calculer une moyenne mobile. Pour chaque enregistrement à mon avis, je voudrais collecter les valeurs des 250 enregistrements précédents, puis calculer la moyenne pour cette sélection. Mes colonnes de vue sont comme suit: TransactionID est unique. Pour chaque TransactionID. Je voudrais calculer la moyenne pour la valeur de la colonne, au cours des 250 derniers enregistrements. Donc, pour TransactionID 300, collecter toutes les valeurs des 250 lignes précédentes (affichage est trié en descendant par TransactionID) et puis dans la colonne MovAvg écrire le résultat de la moyenne de ces valeurs. Je cherche à recueillir des données dans une gamme d'enregistrements. A demandé Oct 28 14 at 20:58


No comments:

Post a Comment