Monday 24 July 2017

Sql Média Móvel Em


Estou tentando calcular de forma eficiente (usando o SQL Server 2008) a média móvel do ProductCount durante um período de 24 horas. Para cada linha na tabela Product, Id gostaria de saber qual era a média de ProductCount (para os produtos fornecidos) nas últimas 24 horas. Um problema com nossos dados é que nem todas as datashur estão presentes (veja o exemplo abaixo). Se um TimeStamp estiver faltando, significa que o ProductCount era 0. Eu tenho uma tabela com milhões ou linhas com uma Data, Produto e Contagem. Abaixo está um exemplo simplificado dos dados com os quais tenho que lidar. Qualquer idéia de como conseguir isso EDITAR. Outro dado que eu preciso é o MIN e MAX ProductCount para o período (ou seja, 24h). A computação do MINMAX é um pouco mais complicada por causa dos valores em falta. Estou 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. As minhas colunas de exibição são as seguintes: TransactionID é exclusivo. Para cada ID de transação. Gostaria de calcular a média do valor da coluna, em relação aos 250 registros anteriores. Então, para o TransactionID 300, colete todos os valores das 250 linhas anteriores (a exibição é ordenada, decrescente por TransactionID) e depois na coluna MovAvg escreva o resultado da média desses valores. Estou procurando coletar dados em uma variedade de registros. Perguntou 28 de outubro às 20: 58Utilizar uma média móvel simples para suavizar os dados é uma técnica bastante popular. É muito ruim o principal exemplo na Ajuda do SQL Anywhere está longe de ser simples: o que torna esse exemplo tão complexo Além da declaração do problema, isto é: calcular a média móvel de todas as vendas de produtos, por mês, no ano 2000. Heres o que faz É complexo: duas referências à função AVG (), um GROUP BY (que, por si só, faz praticamente qualquer SELECT, um scratcher principal),. Uma cláusula WINDOW Stealth uma cláusula WINDOW que nem usa a palavra-chave WINDOW. Então, para os não iniciados (as pessoas que precisam de exemplos mais do que ninguém), não é óbvio que um WINDOW esteja envolvido. Não é apenas qualquer cláusula WINDOW, tenha em atenção você, mas que inclui todos os componentes que você pode codificar em uma cláusula WINDOW: a PARTITION BY, RANGE. Não uma cláusula ROWS simples, mas uma cláusula RANGE completo, uma que possui um relacionamento íntimo com o ORDER BY. Eu sei o que é uma linha, mas o que o redacto é uma GAMA Mas aguarde, há mais: a escolha da GAMA sobre ROWS neste exemplo é fundamental para a operação correta da consulta. (Para uma discussão mais completa sobre este exemplo específico, veja o Exemplo 23 - Computação de uma Média em Movimento no excelente papel branco OLAP de Glenn Paulleys). Agora, vamos voltar à pista: Uma Média Mínima Realmente Simples O seguinte exemplo mostra 10 dias de valor Dados em conjunto com a média móvel do valor de hoje e os dias de ontem: a cláusula WINDOW nas linhas 21 a 23 define uma janela em movimento que contém duas linhas: linha de hoje (LIGA ATUAL) e linha de ontem (1 PRECEDING): a cláusula WINDOW ORDER BY determina o que PRECEDING significa (a linha anterior por t. entrydate) ea cláusula ROWS determina o tamanho da janela (sempre duas linhas). A expressão AVG (t. value) OVER twodays na linha 19 refere-se à cláusula WINDOW pelo nome, e informa ao SQL Anywhere que computa a média dos dois valores de t. value que existem na janela deslizante de 2 filas, para cada um Linha no conjunto de resultados. Então, para 2012-02-02 a média de 10 e 20 é 15.000000, para 2012-02-03 a média de 20 e 10 é 15.000000, para 2012-02-04 a média de 10 e 30 é 20.000000, para 2012- 02-10 a média de 10 e 60 é 35.000000. Ops, e a primeira linha A linha 2012-02-01 não possui uma linha PRECEDING, então qual é a média sobre a janela móvel De acordo com o documento branco de Glenn Paulleys no caso de uma janela em movimento, presume-se que as linhas que contenham Null Os valores existem antes da primeira linha, e após a última linha, na entrada. Isso significa que quando a janela de mudança tem 2012-02-01 como a CORRENTE ATUAL, a 1 linha PRECEDING contém valores NULL. E quando o SQL Anywhere calcula um AVG () que inclui um valor NULL, ele não conta o NULL. Não no numerador ou no denominador ao calcular a média. Sua prova: é por isso que twodayaverage 10.000000 para a primeira linha 2012-02-01. Postado por Breck Carter às 15:47

No comments:

Post a Comment