首页 > 解决方案 > 如何计算 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 波尔森塔耶
一种 .0002
.10
C .10
D .003

所需的输出将类似于:

modelo_ventas 波尔森塔耶
一种 40
40
C 10
D 10

你们知道这里有什么问题吗,伙计们?顺便说一句,谢谢,最好的问候。

标签: sqldatabasepostgresqlsubquery

解决方案


尝试使用窗口函数:

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

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


推荐阅读