Movendo Media Em Sql 2008




Movendo Média Em Sql 2008Estou trabalhando com o SQL Server 2008 R2, tentando calcular uma media movel Para cada registro na minha visao, eu gostaria de coletar os valores dos 250 registros anteriores e, em seguida, calcular a media para esta selecao. Minha coluna sao as seguintes. TransactionID e exclusivo Para cada TransactionID Gostaria de calcular a media para o valor da coluna, sobre os anteriores 250 registros Entao, para TransactionID 300, coletar todos os valores de 250 linhas anteriores exibicao e ordenada decrescente por TransactionID e, em seguida, na coluna MovAvg escrever o resultado do Media desses valores Eu estou olhando para coletar dados dentro de um intervalo de registros. asked Oct 28 14 at 20 58.This e uma pergunta Evergreen Joe Celko eu ignoro qual plataforma DBMS e usado Mas em qualquer caso Joe foi capaz de responder mais de 10 Anos atras com o padrao SQL. Joe Celko SQL Quebra-cabecas e Respostas citacao Essa ultima tentativa de atualizacao sugere que poderiamos usar o predicado para construir uma consulta que nos daria uma media movel. E a coluna extra ou a consulta ap Proach better A consulta e tecnicamente melhor porque a abordagem UPDATE ira desnormalizar o banco de dados No entanto, se os dados historicos sendo gravados nao vai mudar e computar a media movel e caro, voce pode considerar usando a coluna approach. SQL quebra-cabeca query. by todos Significa uniforme Voce apenas joga para o balde de peso apropriado, dependendo da distancia do ponto de tempo atual Por exemplo, pegue peso 1 para datapoints dentro de 24 horas a partir do peso datapoint atual 0 5 para datapoints dentro de 48hrs Esse caso importa quantos datapoints consecutivos como 6 12am e 11 48pm estao distantes um do outro Um caso de uso que eu posso pensar seria uma tentativa de suavizar o histograma onde quer que os pontos de dados nao sao densos o suficiente msciwoj 27 de maio 15 em 22 22.I m nao tenho certeza de que seu resultado esperado mostre classico simples rolante Media por 3 dias Porque, por exemplo, o primeiro triplo de numeros por definicao da. Mas voce espera 4 360 e e confuso. No entanto, sugiro A seguinte solucao, que usa a funcao de janela AVG Esta abordagem e muito mais eficiente e clara e menos recursos que o SELF-JOIN introduzido em outras respostas e estou surpreso que ninguem tenha dado uma solucao melhor. Voce ve que o AVG e embrulhado com Caso, quando rownum, em seguida, forcar NULL s nas primeiras linhas, onde 3 dias Media Movel e sem sentido. Respondido fevereiro 23 16 em 13 12.Nos podemos aplicar Joe Celko s sujo lado esquerdo juntar metodo como citado acima por Diego Scaravaggi para responder a pergunta como Foi solicitado. Gera a saida solicitada. resposta Jan 9 16 em 0 33.Your Answer.2017 Stack Exchange, Inc. De acordo com sua descricao, voce tem uma matriz em seu relatorio Agora voce quer calcular o valor medio dos ultimos 6 meses Direito. No Reporting Service, podemos colocar codigo personalizado no relatorio para lidar com logica complicada Adicionar uma coluna mais coluna dentro do grupo e chamar as funcoes definidas no codigo personalizado Para a sua exigencia, modificamos o codigo de Robert s para alcancar seu objetivo Testamos seu caso dentro Nosso ambiente local com dados de exemplo Aqui estao os passos e screenshots para sua referencia. Put o codigo personalizado no relatorio Private queueLength As Inteiro 6 Private queueSum As Duplo 0 Private queueFull As Boolean False Private idChange As String Dim fila Como Novo Inteiro Public Function CumulativeQueue ByVal currentValue Id como string como objeto Dim removedValue como duplo 0 Se idChange id entao ClearQueue idChange id queueSum 0 queueFull False CumulativeQueue currentValue, id Else Se queueLength Then removidoValue End If queueSum currentValue queueSum - removedValue Se queueLength Then Return Nothing ElseIf queueLength e queueFull False Entao queueFull True Retornar queueSum queueLength Else Retornar queueSum queueLength End If End If End Funcao public function ClearQueue Dim i como Integer Dim n como Integer para em Para 0 Passo-1 proximo i End function. Add mais uma linha dentro do grupo, chamar a funcao Definido no codigo personalizado. Save e pre-visualizacao Parece que abaixo. Se voce tiver alguma pergunta, p Lease sinta-se livre para ask. Best Regards, Simon Hou Pactera. Wednesday, 14 de maio de 2014 12 36 respostas PM. All voce pode usar a funcao RunningValue para this. something como below. Please Mark This As Answer se ele ajuda a resolver o Questao Visakh. According a sua descricao, voce tem uma matriz em seu relatorio Agora voce quer calcular o valor medio de ultimos 6 meses Right. In Reporting Service, podemos colocar codigo personalizado no relatorio para lidar com logica complicada Adicionar mais uma coluna linha Dentro do grupo e chamar as funcoes definidas no codigo personalizado Para a sua exigencia nos modificamos o codigo de Robert s para alcancar seu objetivo Testamos seu caso em nosso ambiente local com dados de amostra Aqui estao os passos e screenshots para sua referencia. Putar o codigo personalizado no relatorio Privado QueueLength As Inteiro 6 Private queueSum As Duplo 0 Private queueFull As Boolean False Private idChange As String Dim fila Como Novo Inteiro Public Function CumulativeQueue ByVal currentValue As Inteiro, id As String como Object Dim removedValue Como Duplo 0 Se idChange id entao ClearQueue idChange id queueSum 0 queueFull False CumulativeQueue currentValue, id Else Se queueLength Then removedValue End Se queueSum currentValue queueSum - removedValue Se queueLength Then Return Nothing ElseIf queueLength E queueFull False Then queueFull True Retornar queueSum queueLength Else Retornar queueSum queueLength End If End If End Function funcao publica ClearQueue Dim i como Integer Dim n como Integer para em Para 0 Step-1 next i End function. Adicionar mais uma linha dentro do grupo, chamar a funcao definida no codigo personalizado. Save e preview It looks Como abaixo. Se voce tiver qualquer pergunta, por favor, sinta-se livre para ask. Best Regards, Simon Hou Pactera. Wednesday, 14 de maio de 2014 12 36 PM. Microsoft esta realizando uma pesquisa on-line para entender a sua opiniao do site Technet Se voce escolher Para participar, a pesquisa on-line sera apresentada a voce quando voce deixar o site da Web Technet. Voce gostaria de participar. 2017 Microsoft Todos os direitos reservados.