Mysql
 sql >> Base de données >  >> RDS >> Mysql

Comment effectuer des calculs dans une requête sql pour calculer la différence en pourcentage ?

Si le nombre de réponses n'est pas connu à l'avance, il serait plus simple de diviser le tableau des questions en 2 - un pour les questions (question_id, question_text), et un pour les choix (question_id, choice_id, choice_text). Le tableau des réponses pourrait être transformé en (question_id, answer_id, choice_id). Ensuite, la sélectionner utiliserait quelque chose comme ce qui suit (QID =l'ID de la question que vous sélectionnez) :

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;

Tout cela ne fait que compter le nombre total de réponses dans la requête interne, puis pour chaque choix, divisez le nombre de réponses avec ce choix sur le total.