Om antalet svar inte är känt i förväg skulle det vara enklare att dela upp frågetabellen i 2 - en för frågorna (fråga_id, frågetext) och en för val (fråga_id, val_id, val_text). Svarstabellen skulle kunna göras till (fråga_id, svar_id, val_id). Att sedan välja det skulle vara att använda något i stil med följande (QID =ID för frågan du väljer):
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;
Allt detta gör är att räkna det totala antalet svar i den inre frågan, och sedan för varje val dela antalet svar med det valet över det totala antalet.