Tuesday, 19 September 2017

Moving Average Ms Sql


Eu tenho uma tabela de dados horários de uso do produto (quantas vezes o produto é usado) dados. Da mesma forma, eu tenho os dados de uso para 4 produtos diferentes (ProductId de 1 a 4) armazenados por hora na tabela de processamento de produtos. Como você pode imaginar, está crescendo constantemente, enquanto o processo ETL noturno despeja os dados durante todo o dia anterior. Se um produto não for usado em qualquer hora de um dia, o registro para essa hora não aparecerá nesta tabela. Da mesma forma, se um produto não for usado durante todo o dia, não haverá nenhum registro para esse dia na tabela. Eu preciso gerar um relatório que dê uso diário e os últimos 7 dias de média móvel e assim por diante. Estou planejando criar uma vista indexada no servidor SQL 2014. Você pode pensar em uma consulta SQL eficiente para fazer isso, perguntou 18 de setembro às 21: 08 Esta é uma pergunta de Evergreen Joe Celko. Ignoro qual plataforma DBMS é usada. Mas, em qualquer caso, Joe conseguiu responder há mais de 10 anos com o SQL padrão. Citação de Joe Celko SQL Puzzles and Answers: 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 Desmoralize o banco de dados. No entanto, se os dados históricos que estão sendo registrados não mudem e o cálculo da média móvel é caro, você pode considerar usar a abordagem da coluna. Consulta SQL Puzzle: por todos os meios uniforme. Você apenas joga no balde de peso apropriado dependendo da distância do ponto de tempo atual. Por exemplo, quottake weight1 para datapoints dentro de 24 horas a partir do ponto de dados atual0.5 para pontos de dados dentro de 48hrsquot. Esse caso é importante quantos pontos de dados consecutivos (como 6:12 e 11:48) estão distantes um do outro. Um caso de uso que eu posso pensar seria uma tentativa de alisar o histograma sempre que os pontos de dados não forem suficientemente densos. 22:22 Não estou certo de que seu resultado esperado (saída) mostre uma média simples em movimento simples (rolando) por 3 dias. Como, por exemplo, o primeiro triplo dos números, por definição, dá: mas você espera 4.360 e é confuso. No entanto, sugiro a seguinte solução, que usa o AVG de função de janela. Essa abordagem é muito mais eficiente (clara e menos intensiva em recursos) do que a SELF-JOIN introduzida em outras respostas (e estou surpreso que ninguém tenha dado uma solução melhor). Você vê que o AVG está envolvido com o caso quando rownum gt p. days, em seguida, para forçar NULL s nas primeiras filas, onde 3 Day Moving Average não tem sentido. Respondeu 23 de fevereiro às 13:12. Podemos aplicar o método de junção externa suja esquerda de Joe Celkos (como citado acima por Diego Scaravaggi) para responder a pergunta como foi feita. Gera a saída solicitada: respondeu Jan 9 às 0:33 Sua resposta 2016 Stack Exchange, Inc

No comments:

Post a Comment