Wednesday 22 November 2017

Promedio Móvil Tsql


Estoy trabajando con SQL Server 2008 R2, tratando de calcular un promedio móvil. Para cada registro en mi vista, me gustaría recopilar los valores de los 250 registros anteriores, y luego calcular el promedio para esta selección. Mis columnas de vista son las siguientes: TransactionID es único. Para cada TransactionID. Me gustaría calcular el promedio para el valor de la columna, más de 250 registros anteriores. Así para TransactionID 300, recopile todos los valores de 250 filas anteriores (la vista se clasifica descendiendo por TransactionID) y luego en la columna MovAvg escriba el resultado del promedio de estos valores. Estoy buscando para recopilar datos dentro de un rango de registros. Pidió Oct 28 14 a las 20: 58Esta es una pregunta de Evergreen Joe Celko. Ignoro qué plataforma de DBMS se utiliza. Pero en cualquier caso Joe fue capaz de responder hace más de 10 años con SQL estándar. Joe Celko SQL Puzzles y Respuestas citation: Ese último intento de actualización sugiere que podríamos usar el predicado para construir una consulta que nos daría una media móvil: ¿Es la columna extra o el enfoque de consulta mejor? La consulta es técnicamente mejor porque el enfoque UPDATE Desnormalizar la base de datos. Sin embargo, si los datos históricos que se están registrando no van a cambiar y el cálculo de la media móvil es caro, podría considerar el uso de la columna. SQL consulta de rompecabezas: por todos los medios uniforme. Usted acaba de tirar al cubo de peso apropiado dependiendo de la distancia desde el punto de tiempo actual. Por ejemplo quottake weight1 para datapoints dentro de 24hrs de datapoint actual weight0.5 para datapoints dentro de 48hrsquot. Ese caso importa cuántos puntos de datos consecutivos (como 6:12 am y 11:48 pm) están distantes entre sí. Un caso de uso que puedo pensar sería un intento de suavizar el histograma dondequiera que los puntos de datos no sean lo suficientemente densos. 22:22 No estoy seguro de que su resultado esperado (salida) muestra clásico simple móvil (rolling) promedio de 3 días. Porque, por ejemplo, el primer triple de números por definición da: pero esperas 4.360 y su confusión. Sin embargo, sugiero la siguiente solución, que utiliza la función de ventana AVG. Este enfoque es mucho más eficiente (claro y con menos recursos) que SELF-JOIN introducido en otras respuestas (y estoy sorprendido de que nadie haya dado una solución mejor). Verá que AVG está envuelto con el caso cuando rownum gt p. days entonces para forzar NULL s en las primeras filas, donde el promedio móvil de 3 días no tiene sentido. Respondió 23 de febrero a las 13:12 Podemos aplicar Joe Celkos sucia izquierda método de unión externa (como citado por Diego Scaravaggi) para responder a la pregunta como se le preguntó. Cálculo de un promedio móvil Una de mis tablas contiene mediciones meteorológicas por minuto (por ejemplo, temperatura y humedad), e I39m tratando de usar una cláusula GROUP BY para calcular un promedio móvil Moviendo el promedio diario por mes para estas mediciones. Quiero expresar este promedio en un tipo de datos smalldatetime. Calcular una temperatura promedio diaria es fácil, pero quiero unir estos promedios durante un mes. ¿Cómo puedo crear los datos que necesito? Para ver cómo puede devolver el promedio móvil, primero cree una tabla de Mediciones y rellénela con datos de muestra para la prueba. El Listado 1 rellena la tabla Medidas con un valor de un año de seis mediciones de temperatura diarias aleatorias. El truco al calcular un promedio diario de la temperatura es usar una expresión en la cláusula GROUP BY. La expresión CONVERT (char (10), DT, 112) del guión 2 39s extrae sólo la parte de la fecha de la columna DT, que contiene la fecha y la hora de la medición. Al utilizar esta expresión en la cláusula GROUP BY, devuelve una fila por cada día. Luego, debe solicitar la temperatura promedio y filtrar el mes deseado, como se muestra en el Listado 2. Esta declaración devuelve un mes de valor de los promedios diarios de temperatura, que constituyen el promedio móvil. La tabla 1 muestra la salida del Listado 2. Share this article Discuta este artículo 1 simon (no verificado) No es una media móvil - está promediando por mes calendario - no promediando los últimos 30 días para cada día. Por favor, ingrese o regístrese para enviar comentarios. Artículos relacionados Búsqueda Acerca de nosotros Copyright copy 2016 Penton

No comments:

Post a Comment