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?