SQL вычисляет процент от двух значений с одинаковым sub_id.

Я работаю над проектом, в котором я перечисляю 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    |
+----------+------------+---------+

4

Решение

Попробуй это:

select
id_problem,
CONCAT(ROUND(MAX(vote) / SUM(vote), 2) * 100, '%') as Percentage
from solutions
group by id_problem;
2

Другие решения

Других решений пока нет …