Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Como eu faria a matemática em uma consulta sql para calcular a diferença percentual?


Se o número de respostas não for conhecido de antemão, seria mais simples dividir a tabela de perguntas em 2 - uma para as perguntas (question_id, question_text) e outra para as opções (question_id, choice_id, choice_text). A tabela de respostas pode ser transformada em (question_id, answer_id, choice_id). Em seguida, selecioná-lo seria usando algo como o seguinte (QID =o ID da pergunta que você está selecionando):
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;

Tudo o que isso faz é contar o número total de respostas na consulta interna e, em seguida, para cada opção, divida o número de respostas com essa opção pelo total.