Вы можете переписать третью часть объединения для ordenacio = 2 в виде простого запроса:
SELECT *, 2 AS ordenacio FROM question
WHERE statsAnswerCorrect + statsAnswerIncorrect >= 10
AND statsAnswerIncorrect > 0
Также имейте в виду, что при упорядочении делением ваш делитель может быть равен 0, что означает, что mysql присвоит ему значение NULL и поместит в него строки в конце, если вы ORDER BY ... DESC, что, вероятно, не то, что вы хочу. Вместо этого используйте ORDER BY ( a/(b+1) ) DESC
или ORDER BY ( a/(a+b) ) DESC
.
Если вы хотите много использовать это представление, возможно, было бы лучше немного денормализовать вашу базу данных и добавить столбцы, содержащие тип вопроса и правильный процент, обновленный при вставке. Это действительно зависит от того, насколько большими должны быть ваши таблицы и сколько операций вставки вы ожидаете.