Tuesday, 7 November 2017

Sql server moving average function


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. SQL consulta 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. Gera a saída solicitada: respondeu Jan 9 at 0:33 Sua resposta 2017 Stack Exchange, IncI precisa de alguma ajuda na criação de uma média móvel de minha métrica de receita bruta no Analysis Services 2005. Eu puxo para cima o modelo sob a guia métrica calculada. Mas eu realmente não entendo o que colocar em cada campo. / Retorna o valor médio de um membro em um intervalo de tempo especificado./ CREATE MEMBER CURRENTCUBE. MEASURES. Moving Average ltltTarget Dimensiongtgt. ltltTarget Hierarchygtgt. Membro atual. Lag (ltltPeriods to Lag gtgt). LtltTarget Dimensiongtgt. ltltTarget Hierarchygtgt. Membro atual. // Este cálculo retorna o valor médio de um membro durante o intervalo de tempo especificado. Este era o modelo que os serviços Analsysis ofereciam. Alguém pode me ajudar a entender como realmente fazer isso talvez através de um exemplo A função Lag funciona em Data também O exemplo fornecido são meses. Ano - Mês - A data é uma hierarquia que eu defini sob o dimesion Tempo e Data é um membro da hierarquia. Estou tentando obter 12, 6 e 3 dias de média móvel da minha receita. É estranho que ele retorna quotErrorquot para as colunas SMA12, SMA6, SMA3. (11): Time. Year - Month - Date. Date, Measures. ASL Receita Líquida MEMBER Measures. SMA6 AS Avg (Time. Year - Mês - Date. Date. Ministro. Gal (5): Time. Year - Month - Date. Date, Measures. ASL Receita Líquida MEMBER Measures. SMA3 AS Avg (Time. Year - Month - Date. Date. ): Time. Year - Month - Date. Date, Measures. ASL Receita líquida Time. Year - Month - Date. Date ON 1 Brilhante, Isso funciona Obrigado um monte. Meu probelm como você afirmou, eu estava usando funcation currentmember incorretamente. Correto MDX que eu tenho é MEMBER Measures. SMA12 AS Avg (Time. Year - Mês - Data. CurrentMember. Gal (11): Time. Year - Month - Date. CurrentMember, Measures. ASL Receita Líquida MEMBER Measures. SMA6 AS Avg ( Time. Year - Mês - Data. CurrentMember. Gal (5): Time. Year - Month - Data. CurrentMember, Measures. ASL Receita Líquida MEMBER Measures. SMA3 AS Avg (Tempo. Year - Mês - Data. ): Time. Year - Month - Date. CurrentMember, Measures. ASL Receita líquida Time. Year - Month - Date. Date ON 1

No comments:

Post a Comment