Monday 28 August 2017

Função Média Móvel Em Sql


Média em movimento em T-SQL Um cálculo comum na análise de tendências é a média móvel (ou rolando). Uma média móvel é a média das, 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 publicação do blog mostrará como calcular a média móvel em T-SQL. Métodos diferentes serão usados ​​dependendo da versão do SQL Server. O gráfico abaixo demonstra o efeito de suavização (linha vermelha) com uma média móvel de 200 dias. As citações de ações são a linha azul. A tendência a longo prazo é claramente visível. T-SQL Moving 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, calcularemos uma média móvel nos últimos 20 dias. Dependendo da versão do SQL Server, haverá um método diferente para fazer o cálculo. E, como veremos mais adiante, as versões mais recentes do SQL Server têm funções que permitem um cálculo muito mais efetivo. SQL Server 2012 e posterior Moeda em movimento Esta versão faz uso de uma função de janela agregada. O que é novo no SQL 2012 é a possibilidade de restringir o tamanho da janela, especificando quantas linhas que precedem a janela devem conter: as linhas anteriores são 19, pois incluiremos a linha atual também no cálculo. Como você pode ver, o cálculo da média móvel no SQL Server 2012 é bastante simples. A figura abaixo demonstra o princípio de janelas. 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: janela média T-SQL. Os resultados dos cálculos em versões antigas do SQL Server são os mesmos, então eles não serão exibidos novamente. SQL Server 2005 8211 2008R2 Média móvel Esta versão faz uso de uma expressão de tabela comum. O CTE é auto-referenciado para obter as últimas 20 linhas para cada linha: Média em Movimento antes do SQL Server 2005 A versão pré 2005 usará uma associação externa esquerda para a mesma tabela para obter as últimas 20 linhas. A tabela externa pode ser dita para conter a janela em que queremos calcular uma média: Comparação de desempenho Se executamos os três métodos diferentes simultaneamente e verificamos o plano de execução resultante, há uma diferença dramática no desempenho entre os métodos: Comparação de três Métodos diferentes para calcular a média móvel Como você pode ver, as melhorias na função de janelas no SQL 2012 fazem uma enorme diferença no desempenho. Conforme mencionado no início desta publicação, as médias móveis são usadas 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 longa ou média, isso pode ser interpretado como um sinal de compra 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 Quotes, Ma20, Ma50 e Ma200. Sinais de compra e venda T-SQL Ma20, Ma50, Ma200. Esta publicação no blog faz parte de uma série sobre análise técnica, TA, no SQL Server. Veja as outras publicações aqui. Postado por Tomas Lind Média móvel em T-SQL Em uma publicação anterior, demonstrei o cálculo de médias móveis em T-SQL. No entanto, há uma grande desvantagem com médias móveis simples. As mudanças de preço no início do período têm a mesma importância que as mudanças de preços mais recentes. De alguma forma, you8217d gosta de atribuir pesos diferentes às mudanças de preços, de modo que as mudanças mais recentes obtem o maior peso. Para isso, pode-se calcular uma média móvel ponderada (WMA). Nesta publicação do blog, vou mostrar dois métodos diferentes para calcular o WMA, que pode ser usado no SQL Server 2005 e posterior, e a outra versão é para versões do SQL Server anteriores a 2005. Para calcular o peso relativo de cada mudança de preço, nós Precisa conhecer a posição de cada variação de preço em relação ao dia calculado. Por causa disto, uma função de janela não pode ser usada. Não é possível obter informações das linhas individuais na janela. No exemplo abaixo, calcularemos a média móvel ponderada por 9 dias (WMA9). O exemplo usa o TAdb. Um script para criar o TAdb pode ser encontrado aqui. Independentemente da versão do SQL Server, para cada linha precisamos acessar as 8 linhas anteriores, 9 com a linha atual incluída. Essas 9 linhas serão a janela que contém nossas mudanças de preços. Cada linha dessa janela receberá um peso linear que está aumentando com a mesma quantidade para cada linha até a linha atual. O peso para cada linha será calculado usando a posição da linha da janela em relação à linha atual. Let8217s dizem que queremos calcular WMA para a 9ª linha (citações de TAdb StockId 1): 1 30,02 30,02 2 30,33 60,66 3 30,33 90,99 4 30,44 121,76 5 30,24 151,20 6 30,27 181,62 7 29,87 209,09 8 30,00 240,00 9 30,02 270,18 A soma do exposto acima é 1355,52. Isso é dividido pela soma dos pesos, que é 123456789 45. O WMA9 para a linha 9 é 1355,52 45 30,12. Se você deseja calcular o WMA além de 9 dias, use o seguinte T-SQL (obtenha a função GetNums2 aqui) para obter o divisor pelo período de duração (por exemplo, 45 para 9 dias WMA): divisores da média móvel média (WMA) ponderada Média móvel ponderada SQL Server 2005 e posterior Esta versão usa um CTE para calcular o WMA: Resultado por 9 dias Média móvel ponderada (WMA9) Nos resultados acima, você pode ver o WMA9 para a linha 9 é 30,12, conforme calculado anteriormente. Média móvel ponderada antes do SQL Server 2005 A única diferença entre a versão do SQL Server 2005 e esta é a utilização de uma expressão de tabela comum. A versão pré 2005 usa tabelas reais em vez de CTE8217s: Desempenho Ao calcular uma média móvel simples e usando o SQL Server 2012 ou posterior, uma grande melhoria no desempenho pode ser vista ao usar as funções da janela em comparação com os metohods alternativos usados ​​em versões antigas do SQL Server . Os cálculos das médias móveis ponderadas no entanto, can8217t usam funções de janelas da mesma maneira. Uma comparação entre a versão do SQL Server 2005 do WMA mostra uma pequena melhoria em relação às versões usadas em versões antigas do SQL Server: T-SQL WMA SQL Server 2005 em comparação com a versão anterior a 2005. Devido aos cálculos onerosos envolvidos na WMA, pode ser uma boa idéia persistir os resultados. WMA são usados ​​da mesma maneira que a SMA, na análise de tendências. A WMA tem mais peso nas recentes mudanças de preço no entanto. Esta publicação no blog faz parte de uma série sobre análise técnica, TA, no SQL Server. Veja as outras publicações aqui. Postado por Tomas Lind Tomas Lind - Serviços de consultoria como SQL Server DBA e Desenvolvedor de banco de dados em High Coast Database Solutions AB. 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 TransactionID 300, colete todos os valores das 250 linhas anteriores (a exibição é ordenada por TransactionID) e, em seguida, na coluna MovAvg, escreva o resultado da média desses valores. Estou procurando coletar dados dentro de uma variedade de registros. Solicitado 28 de outubro 14 às 20:58

No comments:

Post a Comment