我想创建一个动态的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


给每个诽谤的部分。

那是你要的吗?

08-05 06:49