回答の数が事前にわからない場合は、質問テーブルを2つに分割する方が簡単です。1つは質問用(question_id、question_text)、もう1つは選択肢用(question_id、choice_id、choice_text)です。回答テーブルは(question_id、answer_id、choice_id)にすることができます。次に、次のようなものを使用して選択します(QID =選択している質問のID):
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;
これは、内部クエリの回答の総数を数え、選択肢ごとに、その選択肢の回答の数を合計で割るだけです。