Saturday 19 August 2017

Moving Average Sql Server 2008


Estou trabalhando com o SQL Server 2008 R2, tentando calcular uma média móvel. Para cada registro na minha opinião, gostaria de coletar os valores dos 250 registros anteriores e, em seguida, calcular a média para esta seleção. As minhas colunas de exibição são as seguintes: TransactionID é exclusivo. Para cada ID de transação. Gostaria de calcular a média do valor da coluna, em relação aos 250 registros anteriores. Então, para o TransactionID 300, colete todos os valores das 250 linhas anteriores (a exibição é ordenada, decrescente por TransactionID) e depois na coluna MovAvg escreva o resultado da média desses valores. Estou procurando coletar dados em uma variedade de registros. Perguntou 28 de outubro às 20: 58 Estou tentando ter uma coluna média em execução na instrução SELECT com base em uma coluna das n linhas anteriores na mesma instrução SELECT. A média que eu preciso é baseada nas n linhas anteriores no conjunto de resultados. As primeiras 3 linhas da coluna Média são nulas porque não existem linhas anteriores. A linha 4 na coluna Média mostra a média da coluna Número das 3 linhas anteriores. Preciso de ajuda tentando construir uma instrução SQL Select que fará isso. Uma simples auto-união parece funcionar muito melhor do que uma sub-busca de referência de linha. Gerar 10k linhas de dados de teste: Eu puxaria o caso especial das 3 primeiras linhas da consulta principal, você pode UNION TODOS aqueles de volta se você realmente quiser No conjunto de filas. Consulta de auto-união: na minha máquina, isso leva cerca de 10 segundos, a abordagem de subconsulta que Aaron Alton demonstrou demora cerca de 45 segundos (depois de mudá-la para refletir minha tabela de fonte de teste): Se você fizer um PERFIL DE ESTATÍSTICAS SET, você pode ver o A auto-união tem 10k executados no carretel da mesa. A subconsulta tem 10k executa no filtro, agregado e outras etapas.

No comments:

Post a Comment