Foro de elhacker.net

Programación => Bases de Datos => Mensaje iniciado por: Stoya en 6 Febrero 2011, 03:31 am



Título: Media móvil
Publicado por: Stoya en 6 Febrero 2011, 03:31 am
¿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é.


Título: Re: Media móvil
Publicado por: Nakp en 7 Febrero 2011, 02:00 am
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
  1. SELECT avg(campo) FROM tabla LIMIT n,m

y vas variando el offset con el mismo limit :P


Título: Re: Media móvil
Publicado por: Stoya en 7 Febrero 2011, 02:56 am
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.


Título: Re: Media móvil
Publicado por: Nakp en 7 Febrero 2011, 03:05 am
pues... no creo que sea problema del servidor esa consulta... talvez el problema esta en la conexion que estas usando (en que plataforma programas?)


Título: Re: Media móvil
Publicado por: Stoya en 7 Febrero 2011, 03:56 am
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).