Monday 20 November 2017

Moving Average Ms Access


Eu tenho uma produção de tabela que contém a seguinte estrutura. Tenho dados para cada representante de 1 1 2011 para 8 1 2013 O que eu quero ser capaz de fazer é criar uma média móvel de 12 meses começando 1 1 2012 para cada representante, da seguinte forma. quando cada linha representa a média movente de 12 meses para o dito representante em tempo determinado eu encontrei alguns exemplos que eram vagamente perto e eu tentei-os sem proveito. Parece que a adição de um grupo pelo componente do representante é a partida principal de outros exemplos. É quase tão longe quanto eu tenho. Essa consulta parece puxar uma média geral ou soma, uma vez que não há agrupamento na subconsulta correlacionada Quando eu tento agrupar por, recebo um erro que ele só pode retornar no máximo uma row. asked Oct 10 13 at 14 47. Esta é 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 SQL padrão. Joe Celko SQL Quebra-cabeças e respostas citação Essa última tentativa de atualização Sugere que podemos 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 vai desnormalizar o banco de dados No entanto, se os dados históricos sendo gravados não vai mudar e computação a média móvel é caro , Você pode considerar usando a coluna approach. SQL quebra-cabeça query. by todos os meios uniforme Você apenas atirar 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 de datapoint peso atual 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 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 a 22 22.Eu não tenho certeza de que o resultado do 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 definiti 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 eu m Surpreso que ninguém deu uma solução melhor. Você vê que 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.Nós podemos aplicar Joe Celko S sujo esquerda externa juntar método como citado acima por Diego Scaravaggi para responder à pergunta como foi perguntado. Gera o pedido output. answered Jan 9 16 em 0 33.Your Answer.2017 Stack Exchange, Inc. Moving Cálculo Médio. Moving Average Cálculo. Movendo Cálculo Médio. Estou tentando calcular uma média móvel para uma série de dados que eu quero gerar a média móvel para cada ponto dentro dos dados, a fim de mostrar em um gráfico Anyway, abaixo é um exemplo de MS Suporte Tenho Seguido à letra, mas m Ine não dá uma média móvel Repete o mesmo ponto de dados sobre e sobre o primeiro ponto de dados Então, eu não acredito que a função está encontrando o startdate na linha, portanto, apenas retornando o primeiro ponto de dados. Finalmente, talvez isso vai fazer isso realmente Fácil Estou confuso sobre como os índices funcionam Eu pensei que você poderia ter apenas uma chave primária, mas aparentemente você pode criar várias restrições de campo Eu tentei fazer isso com a seguinte consulta de definição de dados. TABLE TABLE1 ADD CONSTRAINT NoDupes UNIQUE CurrencyType, TransactionDate. Desculpe sobre o comprimento deste post Agradeço sua ajuda. A função de exemplo a seguir calcula as médias móveis com base em uma tabela com uma chave primária de vários campos Os valores semanais de moedas estrangeiras são usados ​​para este exemplo Para criar a função de amostra, siga estas Etapas. Crie a tabela a seguir e salve-a como Tabela1 Tabela Tabela1 ------------------------------------- ---- Nome do campo CurrencyType Primary Key Tipo de dados Text Tamanho do campo 25.Fie Ld Nome TransactionDate Chave primária Tipo de dados Data Hora Formato Curto Data. Field Nome Taxa Tipo de dados Moeda Decimal Locais 4.Veja a tabela no modo folha de dados e insira os seguintes valores CurrencyType TransactionDate Rate ------------- ------------------------------- Yen 8 6 93 0 0079 Yen 8 13 93 0 0082 Yen 8 20 93 0 0085 Yen 8 27 93 0 0088 Yen 9 3 93 0 0091 Mark 8 6 93 0 5600 Mark 8 13 93 0 5700 Mark 8 20 93 0 5800 Mark 8 27 93 0 5900 Mark 9 3 93 0 6000.Obra um novo módulo e escreva o seguinte Funções. Função MAvgs Períodos como Integer, StartDate, TypeName Dim MyDB como DATABASE, MyRST Como Recordset, MySum como Dim Duplo i, x Set MyDB CurrentDb Set Erro MyRST. On Retomar Next. PrimaryKey x Períodos - 1 ReDim Store x MySum 0.Para i 0 Para x, TypeName, StartDate. Essas duas variáveis ​​devem estar na mesma ordem que os campos de chave primária na sua tabela. Armazenar i MyRST Rate. If ix Then StartDate StartDate - 7 O 7 aqui assume dados semanais 1 para data. If StartDate diário 8 6 93 MAvgs Null Sair Função 8 6 93 é substituído pela data mais antiga dos dados na sua tabela MySum Store i MySum Próxima i. MAvgs MySum Períodos End Function. Crie a seguinte consulta com base na tabela Table1 Query Query1 ----------- -------------------------------------------- Campo CurrencyType Campo TransactionDate Taxa de campo Campo Expr1 MAvgs 3, TransactionDate, CurrencyType. NOTE Esta consulta irá gerar uma média móvel de três semanas dos dados da taxa Para calcular uma média móvel mais longa ou mais curta, altere o número 3 na coluna Expr1 da consulta para o valor que pretende calcular Execute a consulta Observe que você vê a seguinte média móvel de três semanas para cada moeda Um valor Nulo indica que não havia valores anteriores suficientes para calcular a média da semana de CurrencyType Tra NsactionDate Taxa Expr1 Marca 08 06 93 0 5600 Marca 08 13 93 0 5700 Marca 08 20 93 0 5800 0 57 Marca 08 27 93 0 5900 0 58 Marca 09 03 93 0 6000 0 59 Yen 08 06 93 0 0079 Yen 08 13 93 0 0082 Yen 08 20 93 0 0085 0 0082 Yen 08 27 93 0 0088 0 0085 Yen 09 03 93 0 0091 0 0088.RE Moving Average Calculation. dhookom Programmer 28 Jun 10 21 15.Como antigo é esse código Não utiliza explicitamente DAO E não menciona que isso não funcionará com tabelas vinculadas. Dim MyDB como MyRST as. I usaria uma subconsulta em vez de um conjunto de registros Ele pode parecer algo como. SELECT CurrencyType, TransactionDate, Rate, SELECT Taxa Média FROM Table1 B WHERE AND BETWEEN No entanto, o código que você deu é calcular a média móvel de 14 dias, colocando a média móvel no registro para o dia 1 da média, onde a média móvel é de 14 dias. Eu queria que fosse uma média retrógrada, colocada no registro 14 Eu mudei um pouco para o seguinte e ele Ppears para ser working. SELECT SELECT Taxa Média FROM Table1 B ONDE E ENTRE 14 E AS Expr1 FROM Table1 AS A. Você pode ver, tudo o que eu fiz foi trocar A para B na cláusula where. Esta é uma ajuda muito grande para mim E eu realmente aprecio isso Eu não vi codificação como este antes, e honestamente, eu realmente não entendo Eu não sei como o SQL entende o que B e A são Estou assumindo que eles estão criando algum tipo de referência alternativa para Table1 Se você puder dar alguma orientação eu realmente aprecio isso Também, talvez alguma referência ao material que eu poderia olhar Estou sempre muito animado para aprender algo novo sobre VBA SQL, e eu realmente aprecio a sua ajuda. RE Moving Average Calculation. PHV MIS 29 Jun 10 12 22. compreende o que B e A são eles são alias es. RE Moving Average Calculation. Thank você, PHV É fazer melhor sentido já. RE Moving Average Calculation. joshery420 TechnicalUser 6 Jul 10 15 06.Wow, nunca olhou Na vista SQL antes Supremamente útil Estou tentando obter este código Para funcionar em meu próprio conjunto de dados e eu estou preso em uma questão específica pd2004, não tenho certeza se o novo código de subconsulta funcionou o mesmo que o seu antigo código VBA ou não, mas com os meus dados ainda mostra a média de rolamento, mesmo se não há suficiente Dias para criar esse comprimento de uma média, por exemplo, se eu estiver executando uma média de rolamento de 7 dias, o dia 1 mostra os mesmos dados na coluna 7DayAvg como na coluna de dados diários. O dia 2 mostra a média dos dias 1 e 2, etc. Será que qualquer um de vocês sabe como corrigir isso por acaso Além disso, obrigado pela grande dica de código PHV. RE Moving Average Calculation. joshery420 TechnicalUser 6 Jul 10 15 08.Woops, significou para agradecer dhookom para a dica de código, não PHV Mas hey , Graças a ambos XD. RE Moving Average Calculation. I vai deixar as melhores soluções para os profissionais aqui, mas você pode ver no meu post original como o exemplo da Ajuda da Microsoft tenta lidar com isso Aqui está o código. If StartDate 8 6 93 Então MAvgs Null Exit Function 8 6 93 é substituído pela data mais antiga de Os dados em sua tabela. Eles estão apenas saindo da função se a data não se encaixa os critérios que eu não sei se você poderia incorporar algo assim no código de aliases fornecido por dhookem Eu não gosto da sua maneira de lidar com isso, e eu Suspeito que dhookem irá fornecer uma solução muito mais elegante Para os meus fins a questão que você está descrevendo não é uma preocupação, mas eu estarei interessado em ver qualquer solutions. RE Moving Average Calculator. dhookom Programador 6 Jul 10 17 05.Você poderia tentar usar IIf para testar uma contagem do número de registros Cuidado código de bloco de notas não testado segue. SELECT IIF SELECT Taxa de contagem de Tabela1 C WHERE E ENTRE 14 E SELECT Taxa Média FROM Tabela1 B ONDE E ENTRE 14 E AS Expr1 FROM Table1 AS A. Cálculo da média móvel RE.

No comments:

Post a Comment