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

Posted

技术标签:

【中文标题】SQL 计算具有相同 sub_id 的两个值的百分比。【英文标题】:SQL calculate percentage of two values with same sub_id. 【发布时间】:2016-07-12 19:15:17 【问题描述】:

我正在做一个项目,我列出了 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    |
+----------+------------+---------+

【问题讨论】:

对我 (group by) 和 max() 来说,这听起来像是一个聚合查询。 【参考方案1】:

试试这个:

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

【讨论】:

这项工作谢谢!唯一的问题是百分比是 0.XXXX% 我怎样才能最好地将它乘以 100?

以上是关于SQL 计算具有相同 sub_id 的两个值的百分比。的主要内容,如果未能解决你的问题,请参考以下文章

SQL查询从具有相同列“名称”的其他两个表中获取具有不同值的单列“名称”[关闭]

SQL Server 计算 sql pivot 值的百分比

SQL 查询以查找具有相同列值的多行

在保留列的同时计算具有相同值的行

SQL - 选择两列中具有相同值的行

Spotfire:计算列百分位列