Media móvil

Iniciado por Stoya, 6 Febrero 2011, 03:31 AM

0 Miembros y 1 Visitante están viendo este tema.

Stoya

¿Cómo puedo calcular una media móvil de manera eficiente?

Hacer una consulta por cada elemento de la media móvil para hacer el sumatorio y la división no parece serlo mucho, y he visto que en algunos sitios lo hacen razonablemente rápido, es decir, o lo estoy haciendo mal o tienen un maquinón muy potente.

A cambio... ¿qué queréis a cambio? Os prometería tetas como en 4chan, pero creo que eso aquí no se puede, no veo por qué.

Nakp

#1
tengo una duda... a que te refieres con la media movil? x_x

AVG(DISTINCT campo) no sirve para sacar la media? xD




edito: ya entendi xD deja pensar un rato como jajaja




edito otra vez xD:

segun lo que leo la media movil es la media por conjunto de datos :/ pues... haz un

Código (sql) [Seleccionar]
select avg(campo) from tabla limit n,m

y vas variando el offset con el mismo limit :P
Ojo por ojo, y el mundo acabará ciego.

Stoya

Si la media móvil es una media restringida a una ventana que se va moviendo sobre el total de los datos.

Ya, pero así tengo que hacer una consulta por cada fila de la media móvil, ¿no hay una forma de hacerlo todo con una complejidad menor a n*m? n (filas totales) * m (ventana).

Es como lo estoy haciendo ahora y lleva una eternidad para el volumen de datos que tengo.

Nakp

pues... no creo que sea problema del servidor esa consulta... talvez el problema esta en la conexion que estas usando (en que plataforma programas?)
Ojo por ojo, y el mundo acabará ciego.

Stoya

Estoy usando MySQL sobre windows.

Tengo pendiente probar con postgres, pero no creo que cambie mucho. Podría usar linux, pero tampoco creo que cambie mucho.

Como digo, me gustaría poder hacerlo con una sola consulta (complejidad n) en lugar de n consultas (n*m).