Я работаю над проектом, в котором я перечисляю 5 задач с двумя решениями каждая. Пользователи могут голосовать за одно решение для каждой проблемы. Теперь я должен рассчитать процент от наибольшего значения на проблему.
Например, в задаче 1 у меня есть 20 голосов за решение 1 и 30 голосов за решение 2, я хочу получить 60%. Я знаю, что мне придется подсчитать два значения голосов вместе для каждой задачи, разделить на 100, а затем умножить на самое высокое значение.
Как мне сделать это в моем дао (с sql)? Должен ли я сделать еще один столбец в таблице «решения»?
table: solutions
+----------+------------+---------+
| id | id_problem | vote |
+----------+------------+---------+
| 1 | 1 | 25 |
| 2 | 1 | 10 |
| 3 | 2 | 18 |
| 4 | 2 | 2 |
| 5 | 3 | 6 |
| 6 | 3 | 7 |
| 7 | 4 | 11 |
| 8 | 4 | 4 |
| 9 | 5 | 5 |
| 10 | 5 | 2 |
+----------+------------+---------+
Попробуй это:
select
id_problem,
CONCAT(ROUND(MAX(vote) / SUM(vote), 2) * 100, '%') as Percentage
from solutions
group by id_problem;
Других решений пока нет …