计算查询中相同SELECT的百分比

Calculate the percentage in the same SELECT in a query

我正在尝试计算 SQL 数据库中 table 查询中相同 SELECT 的百分比。

在下面的table中,第3列的功能是取第2列的总和*** (15973,1748209 + 1947,18266487 = 17830,35749) *** 除以相应行的值(在第 1 行的情况下,它除以 15913,1748209),但我仍然不能,有人可以帮助我吗?非常感谢您

SELECT
    Tab_Dados_Escolha.Parametro,
    Sum(Tab_Dados_Escolha.Metrica) As Metrica,
    Sum(Tab_Dados_Escolha.Metrica) / < % total % > As Porcentagem
FROM
    Tab_Dados_Escolha
WHERE
    (
        Tab_Dados_Escolha.E3TimeStamp >= #<%inicio%>#  
        AND Tab_Dados_Escolha.E3TimeStamp <= #<%fim%># 
    )
GROUP BY
    Tab_Dados_Escolha.Parametro

认为您想使用sum() over ()window功能。

SELECT Tab_Dados_Escolha.Parametro
    , SUM(Tab_Dados_Escolha.Metrica) AS Metrica
    , SUM(Tab_Dados_Escolha.Metrica)/SUM(Tab_Dados_Escolha.Metrica) OVER (PARTITION BY Tab_Dados_Escolha.Parametro) AS Porcentagem
FROM Tab_Dados_Escolha
WHERE (Tab_Dados_Escolha.E3TimeStamp >= #<%inicio%># AND Tab_Dados_Escolha.E3TimeStamp <= #<%fim%>#) 
GROUP BY Tab_Dados_Escolha.Parametro;

以下是使用 window 函数的方法:

SELECT
  Tab_Dados_Escolha.Parametro,
  sum(Tab_Dados_Escolha.Metrica) As Metrica,
  sum(Tab_Dados_Escolha.Metrica) * 100.0 / sum(sum(Tab_Dados_Escolha.Metrica)) over() As Porcentagem
FROM Tab_Dados_Escolha
WHERE    
   Tab_Dados_Escolha.E3TimeStamp >= #<%inicio%>#  
   AND Tab_Dados_Escolha.E3TimeStamp <= #<%fim%># 
GROUP BY Tab_Dados_Escolha.Parametro