Skip to main content

Sql Server Moving Average Query


Estou trabalhando com o SQL Server 2008 R2, tentando calcular uma média móvel. Para cada registro na minha opinião, eu gostaria de coletar os valores dos 250 registros anteriores e, em seguida, calcular a média para esta seleção. As colunas de exibição são as seguintes: TransactionID é exclusivo. Para cada TransactionID. Eu gostaria de calcular a média para o valor da coluna, sobre os anteriores 250 registros. Portanto, 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 da média desses valores. Eu estou olhando para coletar dados dentro de um intervalo de registros. Perguntou Oct 28 14 at 20: 58Esta é uma pergunta Evergreen Joe Celko. Eu ignoro qual plataforma DBMS é usada. Mas em qualquer caso Joe foi capaz de responder há mais de 10 anos com SQL padrão. 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 abordagem de consulta melhor A consulta é tecnicamente melhor porque a abordagem UPDATE Desnormalizar o banco de dados. No entanto, se os dados históricos que estão sendo gravados não vai mudar ea computação da média móvel é cara, você pode considerar usar a abordagem de coluna. Consulta SQL quebra-cabeça: por todos os meios uniforme. Você apenas joga para o balde de peso apropriado, dependendo da distância do ponto de tempo atual. Por exemplo quottake weight1 para datapoints dentro de 24hrs de datapoint atual weight0.5 para datapoints dentro de 48hrsquot. Esse caso importa quanto pontos de dados consecutivos (como 6:12 am e 11:48 pm) estão distantes uns dos outros 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 ndash msciwoj May 27 15 at 22:22 Eu não tenho certeza que seu resultado esperado (saída) mostra clássico simples movendo (rolando) média de 3 dias. Porque, por exemplo, o primeiro triplo de números por definição dá: mas você espera 4.360 e sua confusão. No entanto, sugiro a seguinte solução, que usa a função de janela AVG. Essa abordagem é muito mais eficiente (clara e menos intensiva em recursos) do 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 é envolvido com o caso quando rownum gt p. days, em seguida, para forçar NULL s nas primeiras linhas, onde 3 dias Moving Average é sem sentido. Respondeu Feb 23 at 13:12 Podemos aplicar Joe Celkos suja deixada externa juntar método (como citado acima por Diego Scaravaggi) para responder à pergunta como foi perguntado. Gerar a saída solicitada: respondida Jan 9 at 0:33 Sua resposta 2016 Stack Exchange, IncComo calcular uma média móvel SQL sem uma atualização de cursor: Se você estiver trabalhando com as versões mais recentes do SQL Server, você pode usar as funções de janela para realizar a mesma coisa. Eu postei o código atualizado no final do post. Para este vídeo, eu ainda gosto do processo de pensamento de ancorar a uma data. Vídeo: média móvel de 3 dias em SQL Uma maneira eficiente de calcular uma média móvel em SQL usando alguns truques para definir âncoras de data. Há debates sobre a melhor maneira de fazer um SQL Moving Average no SQL Server. Algumas pessoas pensam que há momentos em que um cursor é mais eficiente. Outros acham que você pode fazer tudo de uma maneira baseada em set sem o cursor. No outro dia eu estava indo para calcular uma média móvel e meu primeiro pensamento foi usar um cursor. Eu fiz algumas pesquisas rápidas e encontrei esta pergunta do fórum: Moving Average no TSQL Há uma postagem que mostra uma subconsulta com uma data de âncora para ajudar a encontrar o deslocamento de 1 e 2 dias. Aqui está o script que você pode usar para testar o resultado final do SQL Moving Average de 3 dias. Aqui está a consulta final. Aqui está a consulta que você usaria com o SQL Server 2012. Compartilhe isso: Assumindo que você tem dimensões de data no seu modelo e com base no seu nome curto do mês com o ano. Aqui você pode criar uma medida calculada para a média móvel em seu cenário Deixe-me saber para quaisquer detalhes Proposta como resposta por Charlie Liao Pessoal contingente Microsoft, Moderador sexta-feira, 07 de fevereiro de 2014 6:28 Marcado como resposta por Charlie Liao Pessoal contingente Microsoft, Em estatísticas, uma média móvel (média móvel ou média corrente) é um cálculo para analisar pontos de dados, criando uma série de médias de diferentes subconjuntos Do conjunto de dados completo. Inclui média móvel simples, média móvel acumulada e média móvel ponderada. Em seu cenário, você pode criar um terceiro campo que calcula a média móvel para os últimos 6 meses usando média móvel simples. Aqui está uma consulta de exemplo do Adventure Works para sua referência. Charlie Liao Suporte Técnico Comunidade TechNet Sexta-feira, 7 de fevereiro de 2014 6:28 Todas as respostas Assumindo que você tem dimensões de data em seu modelo e com base no seu nome curto do mês com ano. Aqui você pode criar uma medida calculada para a média móvel em seu cenário Deixe-me saber para quaisquer detalhes Proposta como resposta por Charlie Liao Pessoal contingente da Microsoft, Moderador sexta-feira, 07 de fevereiro de 2014 6:28 Marcado como resposta por Charlie Liao Pessoal contingente da Microsoft, Em estatísticas, uma média móvel (média móvel ou média corrente) é um cálculo para analisar pontos de dados, criando uma série de médias de diferentes subconjuntos Do conjunto de dados completo. Inclui média móvel simples, média móvel acumulada e média móvel ponderada. Em seu cenário, você pode criar um terceiro campo que calcula a média móvel para os últimos 6 meses usando média móvel simples. Aqui está uma consulta de exemplo do Adventure Works para sua referência. Charlie Liao Suporte Comunidade TechNet sexta-feira, 7 de fevereiro de 2014 6:28 A Microsoft está conduzindo uma pesquisa on-line para entender sua opinião sobre o site da Msdn. Se você optar por participar, o questionário on-line será apresentado a você quando você deixar o site Msdn. Gostaria de participar 2016 Microsoft. Todos os direitos reservados. AVG (Transact-SQL) ALL Aplica a função agregada a todos os valores. ALL é o padrão. DISTINCT Especifica que o AVG seja executado somente em cada instância exclusiva de um valor, independentemente do número de vezes que o valor ocorrer. Expressão É uma expressão da categoria de tipo de dados numérico exata ou aproximada, exceto para o tipo de dados bit. Funções agregadas e subconsultas não são permitidas. OVER (partitionbyclause orderbyclause) partitionbyclause divide o conjunto de resultados produzido pela cláusula FROM em partições às quais a função é aplicada. Se não for especificado, a função trata todas as linhas do conjunto de resultados da consulta como um único grupo. Orderbyclause determina a ordem lógica na qual a operação é executada. Ordem porcláusula é necessária. Para obter mais informações, consulte Cláusula OVER (Transact-SQL). O tipo de retorno é determinado pelo tipo de resultado avaliado da expressão. Decimal category (p, s) Se o tipo de dados de expressão é um tipo de dados de alias, o tipo de retorno também é do tipo de dados de alias. No entanto, se o tipo de dados base do tipo de dados de alias é promovido, por exemplo de tinyint para int. O valor de retorno é do tipo de dados promovido e não o tipo de dados alias. AVG () calcula a média de um conjunto de valores dividindo a soma desses valores pela contagem de valores nonnull. Se a soma exceder o valor máximo para o tipo de dados do valor de retorno um erro será retornado. O AVG é uma função determinística quando usado sem as cláusulas OVER e ORDER BY. Ele é não-determinístico quando especificado com as cláusulas OVER e ORDER BY. Para obter mais informações, consulte Funções determinísticas e não determinísticas. A. Usando as funções SUM e AVG para cálculos O exemplo a seguir calcula as horas de férias médias e a soma das horas de folga que os vice-presidentes de Ciclos de Trabalho Aventuras usaram. Cada uma dessas funções agregadas produz um único valor de resumo para todas as linhas recuperadas. O exemplo usa o banco de dados AdventureWorks2012.

Comments

Popular posts from this blog

Ação Do Preço Do Forex

Ação do preço do Forex Forex preço ação está começando a receber um monte de hype, e por uma boa razão, mas o que exatamente é ação de preço e como você trocá-lo? Permite encontrar out8230; A idéia básica por trás da ação de preços é que estamos estudando como o mercado se move em relação ao movimento de preços anterior. Em outras palavras, como os preços reagem aos níveis anteriores. Eu vou bater o botão de pausa antes de ir mais longe porque eu quero enfrentar o gorila de 800 libras na sala (na verdade, o maior gorila já gravado foi de 600 lbs), mas 800 soa melhor 😉 O gorila Im falando é o uso de Indicadores. Quando eu comecei a negociar Forex em 2007, eu tentei centenas de indicadores e EAs. Você nome dele, eu tentei! Eu estava convencido de que o 8220, santo graal8221; Estava lá fora, eu só precisava colocar no tempo para encontrá-lo. Eu não sabia que no momento, mas eu estava parcialmente certo há um Santo Graal quando se trata de Forex, não apenas na forma de um indicador. Então...