Jeśli liczba odpowiedzi nie jest wcześniej znana, łatwiej byłoby podzielić tabelę pytań na 2 - jedną dla pytań (identyfikator_pytania, tekst_pytania) i jedną dla opcji (identyfikator_pytania, identyfikator_wyboru, tekst_wyboru). Tabela odpowiedzi może zostać przekształcona w (question_id, answer_id, choice_id). Następnie, wybierając go, użyjemy czegoś podobnego do następującego (QID =identyfikator pytania, które wybierasz):
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;
Wszystko to polega na zliczeniu całkowitej liczby odpowiedzi w zapytaniu wewnętrznym, a następnie dla każdego wyboru podziel liczbę odpowiedzi z tym wyborem przez sumę.