Als het aantal antwoorden niet vooraf bekend is, zou het eenvoudiger zijn om de vragentabel in tweeën te splitsen - één voor de vragen (question_id, question_text) en één voor keuzes (question_id, choice_id, choice_text). De antwoordentabel kan worden gemaakt in (question_id, answer_id, choice_id). Als u deze vervolgens selecteert, gebruikt u zoiets als het volgende (QID =de ID van de vraag die u selecteert):
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;
Het enige dat hiermee wordt gedaan, is het totale aantal antwoorden in de binnenvraag tellen en vervolgens voor elke keuze het aantal antwoorden met die keuze over het totaal verdelen.