Foros del Web » Programando para Internet » PHP »

Calcular media ponderada de encuesta

Estas en el tema de Calcular media ponderada de encuesta en el foro de PHP en Foros del Web. Estoy programando una encuesta integrada en un foro phpBB (necesito tenerla por separado en el portal web y personalizada), y actualmente el sistema de votación ...
  #1 (permalink)  
Antiguo 08/11/2009, 07:14
Avatar de zormon  
Fecha de Ingreso: noviembre-2009
Mensajes: 1
Antigüedad: 14 años, 5 meses
Puntos: 0
Calcular media ponderada de encuesta

Estoy programando una encuesta integrada en un foro phpBB (necesito tenerla por separado en el portal web y personalizada), y actualmente el sistema de votación e inserción en la base de datos funciona, ahora quiero terminar la página que muestra los resultados de la encuesta.

La encuesta contiene 30 preguntas que se puntúan de 1 a 5. La idea es mostrar la media ponderada de cada una de las 30 preguntas, para evitar que los votos "troll" (por desgracia hay bastantes en el foro) impliquen resultados significativos en las medias. Por ejemplo, cuanto más voten por un "4" en una pregunta, más peso tendrá ese valor respuesta en la media de la pregunta.

Los resultados los guardo en una tabla de MySQL estructurada así:

IDuser, p1, p2, p3, p4, p5 [...] p30
con enteros pequeñitos

Sé que la tabla es un poco grande, pero tengo que tener los votos de cada usuario por separado.

El problema es que para calcular la media aritmética de cada pregunta sería tan fácil como hacer un AVG por cada campo de toda la tabla y arreglado, pero que yo sepa, MySQL no tiene una función para hacer lo mismo con las ponderadas, y traerme todos los resultados a lo bruto de la tabla y luego hacer cálculos por cada pregunta con arrays para calcularlo todo se me antoja demasiado complicado (¿y pesado para el server?).

Se me ocurre usar otra tabla MySQL para ir calculando los votos y así tener los pesos más fácilmente, no sé... ¿qué se les ocurre?
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 19:30.