Ver Mensaje Individual
  #5 (permalink)  
Antiguo 03/11/2010, 15:20
Avatar de gnzsoloyo
gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: sistema de rating (ON DUPLICATE UPDATE) y promedio

Cita:
La logica de un promedio es sumar los puntajes, y restarlos por el numero de puntajes. En este caso, sumo el total existente al nuevo puntaje y lo divido por dos. Esa manera de evaluar un promedio "al vuelo" esta bien matemáticamente?
En realidad, a mi entender estás encarando mal el problema porque el SQL posee funciones para realizar ese tipo de operaciones estadísticas con mucha mayor facilidad y precisión de lo que puedes hacer en la forma que has planeado.
El tema pasa por dos detalles al menos:
1) Nunca se guardan valores calculables en las bases de datos, porque el tiempo que tarda la base de datos en realizar esos cálculos es demasiado breve, y carece de sentido agregar campos simplemente para guarda algo que puedes obtener en la misma consulta.
2) Los promedios son valores dinámicos. La cantidad de ítems intervinientes afecta el valor real del promedio, por lo que un promedio sólo tiene sentido para un momento dado, o bien para un período ya cerrado.

Lo que sería bueno, para poder ayudarte, es que nos dieses una idea de qué es lo que calculas y que promedios agrupados en base a qué conceptos son los que quieres obtener.

Para darte una idea, MySQL puede devolverte en una consulta no sólo las medias aritméticas (promedios), sino que te los puede segmentar agrupadas por conceptos de tiempo, con subtotales por ítem o por períodos, o como quiera que desees agrupar la info, y para lograrlo sólo necesita los valores a sumar y no sus "promedios" parciales.

Así, pues, ¿cuáles som los datos, los conceptos de agrupamiento y cómo quieres promediarlos?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)