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' 中创建另一列?
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;
我正在做一个项目,我列出了 5 个问题,每个问题有 2 个解决方案。用户可以对每个问题的一个解决方案进行投票。现在我必须计算每个问题的最高价值的百分比。
例如在问题1中,我对方案1有20票,对方案2有30票,我想得到60%。我知道我必须将每个问题的两个投票值一起计算除以 100,然后乘以最高值。
如何在我的 dao 中执行此操作(使用 sql)?我是否必须在 table 'solutions' 中创建另一列?
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;