我想创建一个动态的camemebrt,在其中我将使用sql代码获取百分比。我有一张桌子,其中:
Montant | libelle | Bureau
| 20 | A1 | B1 |
| 30 | A2 | B2 |
| 70 | A1 | B2 |
| 80 | A2 | B1 |
在我的卡门培尔奶酪中,我有一个过滤器,从中可以选择“ Bureau”列的值:
因此,当我选择
B1
值时,我会得到一个赞:对于局1:20%A1和80%A2
当我选择“所有局”以获取所有局的统计信息时,我会得到:
对于所有局:50%A1和50%a2。
我正在使用此查询:
select (sum(MONTANT) / (select sum(MONTANT) from table1))
from table1
where id_bureau= "the value of filtre"
group by libelle;
当我从过滤器中选择所有局时,这是可行的,但是当我只想显示一个“局”的百分比时,我得到了一个错误的值。
最佳答案
您应该只对匹配值求和。 Bureau ='B1'如果为true,则为1;如果为false,则为0。
select libelle, sum(montant * (Bureau = 'B1')) / sum(Bureau)
from table1
group by libelle
给每个诽谤的部分。
那是你要的吗?