Esta é uma pergunta Evergreen Joe Celko eu ignorar qual plataforma DBMS é usado Mas em qualquer caso Joe foi capaz de responder mais de 10 anos atrás 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 irá desnormalizar o banco de dados No entanto, se os dados históricos sendo gravados não vai mudar e computando o A média móvel é cara, você pôde considerar usar a coluna approach. SQL quebra-cabeça query. by todos os meios uniforme Você apenas joga ao balde apropriado do peso dependendo da distância do ponto atual do tempo Por exemplo tome o peso 1 para datapoints dentro de 24hrs do datapoint atual Peso 0 5 para datapoints dentro de 48hrs Esse caso é importante quanto datapoints consecutivos como 6 12am e 11 48pm estão distantes uns dos outros Um caso de uso I c Um pensamento de 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 de 15 às 22 22.I m não tenho certeza que sua saída de resultado esperado mostra simples clássico móvel móvel média de 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 clara e menos intensiva de recursos do que SELF-JOIN introduzido em outros Respostas e estou surpreso que ninguém deu uma solução melhor. Você vê que o AVG é envolvido com o caso quando rownum, em seguida, para forçar NULL s nas primeiras linhas, onde 3 dias Média Móvel é sem sentido. resposta fevereiro 23 16 em 13 12.We Pode aplicar Joe Celko s sujo lado esquerdo juntar método como citado acima por Diego Scaravaggi para responder à pergunta como foi solicitado. Gera a saída solicitada. answered Jan 9 16 em 0 33.Your Answer.2017 Stack Exchange, Inc. I estão 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. Minhas colunas de exibição são as follows. TransactionID é exclusivo para cada TransactionID I 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 da média desses valores Estou olhando para Coletar dados dentro de um intervalo de records. asked Oct 28 14 em 20 58.Using uma média móvel simples para suavizar os dados é uma técnica bastante popular é muito ruim o exemplo primário na Ajuda do SQL Anywhere está longe de ser simples O que torna esse exemplo Tão complexo Além da declaração de problema, que é calcular a média móvel de todas as vendas de produtos, por mês, no ano 2000.Aqui está o que torna complexo. two referências à função AVG. a GRUPO POR que todos por Faz quase qualquer SELECT um head-scratcher. Uma cláusula WINDOW stealth. a cláusula WINDOW que doesn t mesmo usar a palavra-chave WINDOW para os não iniciados as pessoas que precisam de exemplos mais do que ninguém, não é óbvio que um WINDOW está envolvido em tudo. Não apenas qualquer cláusula WINDOW, Mas uma que inclui cada componente único que você pode codificar em uma cláusula WINDOW. a PARTITION BY. a RANGE não uma cláusula ROWS simples, mas full-blown cláusula RANGE, um que tem um relacionamento íntimo com o ORDER BY eu sei o que é uma linha, Mas o que o redigido é um RANGE. But esperar, há s mais A escolha de RANGE sobre ROWS neste exemplo é fundamental para a operação correta da consulta para uma discussão mais completa deste exemplo específico, veja Exemplo 23 - Computing a Moving Average Em Glenn Paulley s excelente OLAP white paper Agora, vamos voltar à pista. Realmente Realmente simples Moving Average. O exemplo a seguir exibe 10 dias de dados em conjunto com a média móvel de hoje s valor e ontem s A cláusula WINDOW em linhas 21 a 23 Define uma janela em movimento que contém duas linhas de linha de hoje s row ROUND CURRENT e ontem linha s 1 PRECEDING. the WINDOW ORDER BY cláusula determina o que PRECEDING significa a linha anterior por and. the ROWS cláusula determina o tamanho da janela sempre duas linhas. A expressão AVG OVER twodays na linha 19 refere-se à cláusula WINDOW por nome, e ele diz ao SQL Anywhere para calcular a média dos dois valores de que existem na janela deslizante de 2 linhas, para cada linha no conjunto de resultados. Assim, para 2017 -02-02 a média de 10 e 20 é 15 000000.for 2017-02-03 a média de 20 e 10 é 15 000000.for 2017-02-04 a média de 10 e 30 é 20 000000.for 2017-02 -10 a média de 10 e 60 é 35 000000.Oops, que sobre a primeira fileira. A linha 2017-02-01 não tem uma linha PRECEDING, então qual é a média sobre a janela em movimento. De acordo com Glenn Paulley s branco Papel no caso de uma janela em movimento, assume-se que as linhas que contêm valores Nulos existem antes da primeira linha, e depois da última linha, no inpu T. Isso significa que quando a janela em movimento tem 2017-02-01 como ROUND CURRENT, a linha 1 PRECEDING contém valores NULL e quando o SQL Anywhere calcular um AVG que inclui um valor NULL, ele não conta o NULL em todos os não no Numerador ou no denominador ao calcular a média Aqui é prova Isso é por que twodayaverage 10 000000 para a primeira linha 2017-02-01.Postado por Breck Carter em 3 47 PM.
No comments:
Post a Comment