sql >> Base de Datos >  >> RDS >> Mysql

¿Cómo realizaría operaciones matemáticas dentro de una consulta sql para calcular la diferencia porcentual?

Si el número de respuestas no se conoce de antemano, sería más sencillo dividir la tabla de preguntas en 2:una para las preguntas (question_id, question_text) y otra para las opciones (question_id, choice_id, choice_text). La tabla de respuestas podría convertirse en (question_id, answer_id, choice_id). Luego, seleccionarlo sería usar algo como lo siguiente (QID =el ID de la pregunta que está seleccionando):

SELECT choice,
       (COUNT(*) / (SELECT COUNT(*)
                    FROM answers
                    WHERE answers.question_id = QID)) * 100 AS percentage
FROM choices
     INNER JOIN answers
       ON choices.choice_id = answers.choice_id
       AND choices.question_id AND choices.question_id
WHERE choices.question_id = QID
GROUP BY choice_id;

Todo lo que hace es contar el número total de respuestas en la consulta interna, luego, para cada opción, dividir el número de respuestas con esa opción entre el total.