我如何计算 SQL 中占总数的百分比?

How could I calculate the percentage of total in SQL?

我正在使用 postgreSQL 创建一个查询,该查询能够根据类别(列“modelo_venta”)计算总数的百分比,并且还有其他不同的列,我试过了如下所示,但效果不佳,当我总结百分比时我没有得到 100%:

SELECT
    pais,
    estatus,
    centro,
    drv,
    uen,
    agencia,
    modelo_venta,
    Sum(fuera_ruta_volumen_cartones) as fuera_ruta_volumen_cartones,
    Sum(fuera_ruta_volumen_hectolitros) as fuera_ruta_volumen_hectolitros,
    round(cast(count(modelo_venta) * 100.0 / (select count(*) FROM reporting_services.vw_mx_log_icaro_modelo_servicio_fuera_ruta) as numeric),3) as porcentaje,
    fecha_reparto
FROM
    reporting_services.vw_mx_log_icaro_modelo_servicio_fuera_ruta
WHERE
    modelo_venta IS NOT NULL
    and motivo_fuera_ruta = 'Otros Motivos'
group by
    pais,
    estatus,
    centro,
    drv
    uen,
    agencia,
    modelo_venta,
    fuera_ruta_volumen_cartones,
    fuera_ruta_volumen_hectolitros,
    fecha_reparto
ORDER BY
    porcentaje DESC

输出是这样的:

modelo_ventas porcentaje
A .0002
B .10
C .10
D .003

所需的输出类似于:

modelo_ventas porcentaje
A 40
B 40
C 10
D 10

伙计们,你们知道这里出了什么问题吗?顺便说一句,致以最诚挚的问候。

尝试使用 window 函数:

count(modelo_venta) * 100.0 / sum(count(modelo_venta)) over () as porcentaje,

问题是您要根据查询结果进行计数,而不是整个 table。