SQL计算具有相同sub_id的两个值的百分比


SQL calculate percentage of two values with same sub_id.

我正在做一个项目,列出了5个问题,每个问题有2个解决方案。用户可以对每个问题的一个解决方案进行投票。现在我必须计算每个问题的最高值的百分比。

例如,在问题1中,我对解决方案1有20票,对解决方案2有30票,我想得到60%。我知道我必须将每个问题的两个投票值相加除以100,然后乘以最高的值。

如何在我的dao(使用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;