Estou trabalhando com o SQL Server 2008 R2, tentando calcular uma média móvel Para cada registro na minha visão, eu gostaria de coletar os valores dos 250 registros anteriores e, em seguida, calcular a média para esta seleção. Minha coluna são as seguintes. TransactionID é exclusivo Para cada TransactionID Gostaria de calcular a média para o valor da coluna, sobre os anteriores 250 registros Então, para TransactionID 300, coletar todos os valores de 250 linhas anteriores exibição é ordenada decrescente por TransactionID e, em seguida, na coluna MovAvg escrever o resultado do Média desses valores Eu estou olhando para coletar dados dentro de um intervalo de registros. asked Oct 28 14 at 20 58.This é uma pergunta Evergreen Joe Celko eu ignoro qual plataforma DBMS é usado Mas em qualquer caso Joe foi capaz de responder mais de 10 Anos atrás com o padrão SQL. Joe Celko SQL Quebra-cabeças e Respostas citação Essa última tentativa de atualização sugere que poderíamos usar o predicado para construir uma consulta que nos daria uma média móvel. É a coluna extra ou a consulta ap Proach better A consulta é tecnicamente melhor porque a abordagem UPDATE vai desnormalizar o banco de dados. No entanto, se os dados históricos sendo gravados não vai mudar ea computação da média móvel é cara, você pode considerar usar a abordagem de coluna. Significa uniforme Você apenas joga para o balde de peso apropriado, dependendo da distância do ponto de tempo atual Por exemplo, tomar peso 1 para datapoints dentro de 24 horas a partir do peso do datapoint atual 0 5 para datapoints dentro de 48hrs Esse caso importa quantos datapoints consecutivos como 6 12am e 11 48pm estão distantes um do outro Um caso de uso que eu posso pensar seria uma tentativa de suavizar o histograma onde quer que os pontos de dados não são densos o suficiente msciwoj 27 de maio 15 em 22 22.I m não tenho certeza de que seu resultado esperado mostre clássico simples rolante Média por 3 dias Porque, por exemplo, o primeiro triplo de números por definição dá. Mas você espera 4 360 e é confuso. No entanto, sugiro A seguinte solução, que usa a função de janela AVG Esta abordagem é muito mais eficiente e clara e menos recursos que o SELF-JOIN introduzido em outras respostas e estou surpreso que ninguém tenha dado uma solução melhor. Você vê que o AVG é embrulhado com Caso, quando rownum, em seguida, forçar NULL s nas primeiras linhas, onde 3 dias Média Móvel é sem sentido. Respondido fevereiro 23 16 em 13 12.Nós podemos aplicar Joe Celko s sujo lado esquerdo juntar método como citado acima por Diego Scaravaggi para responder à pergunta como Foi perguntado. Gera a saída solicitada. resposta Jan 9 16 em 0 33.Your Answer.2017 Stack Exchange, Inc. Moving média em T-SQL. Um cálculo comum na análise de tendência é a média móvel ou móvel A média móvel é a média móvel Média da, por exemplo, as últimas 10 linhas A média móvel mostra uma curva mais suave do que os valores reais, mais ainda com um período mais longo para a média móvel, tornando-se uma boa ferramenta para análise de tendências Esta postagem no blog vai mostrar como calcular Média móvel em T-SQL D Ifferent métodos serão utilizados dependendo da versão do SQL Server. O gráfico abaixo demonstra a linha vermelha de efeito de alisamento com uma média móvel de 200 dias As cotações de ações são a linha azul A tendência de longo prazo é claramente visível. T-SQL Movendo Avergage 200 dias . A demonstração abaixo requer o banco de dados TAdb que pode ser criado com o script localizado aqui. No próximo exemplo vamos calcular uma média móvel para os últimos 20 dias Dependendo da versão do SQL Server, haverá um método diferente para fazer o E, como veremos mais adiante, as versões mais recentes do SQL Server tem funções que permitem um cálculo muito mais eficaz. SQL Server 2017 e posterior Moving Average. This versão fazer uso de uma função de janela agregada Whats novo no SQL 2017 é a possibilidade de Restringir o tamanho da janela, especificando quantas linhas que precedem a janela deve conter. Rows precedente é 19, porque vamos incluir a linha atual, bem como no cálculo Como você pode ver, o c Alculation de média móvel no SQL Server 2017 é bastante simples. A figura abaixo demonstra o princípio de janela A linha atual é marcada com amarelo A janela é marcada com um fundo azul A média móvel é simplesmente a média de QuoteClose nas linhas azuis. Moving janela média. Os resultados dos cálculos em versões mais antigas do SQL Server são os mesmos, para que eles não serão mostrados novamente. SQL Server 2005 2008R2 Moving Average. This versão fazer uso de uma expressão de tabela comum O CTE é auto referenciado para obter As últimas 20 linhas para cada row. Moving Média antes do SQL Server 2005. A versão pré 2005 usará uma junção externa esquerda para a mesma tabela para obter as últimas 20 linhas A tabela externa pode ser dita para conter a janela que queremos calcular Uma média de comparação de desempenho. Se executarmos os três diferentes métodos simultaneamente e verificar o plano de execução resultante, há uma diferença dramática no desempenho entre os métodos parision de três métodos diferentes para Calcular a média móvel. Como você pode ver, as melhorias janela de função em SQL 2017 faz uma enorme diferença no desempenho. Como mencionado no início deste post, médias móveis são usados como uma ferramenta para ilustrar as tendências Uma abordagem comum é combinar médias móveis De diferentes comprimentos, a fim de detectar mudanças nas tendências de curto, médio e longo prazo, respectivamente. De particular interesse são o cruzamento de linhas de tendência. Por exemplo, quando a tendência curta se move sobre a tendência de longo ou médio, isso pode ser interpretado como uma compra Sinal na análise técnica E quando a tendência curta se move sob uma linha de tendência mais longa, isso pode ser interpretado como um sinal de venda. O gráfico abaixo mostra Cotações, Ma20, Ma50 e Ma200.T-SQL Ma20, Ma50, Ma200 comprar e vender sinais. Esta postagem do blog é parte de uma série sobre análise técnica, TA, no SQL Server Veja os outros posts aqui. Postado por Tomas Lind.
Comments
Post a Comment