sql - 如何计算 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 |
你们知道这里有什么问题吗,伙计们?顺便说一句,谢谢,最好的问候。
解决方案
尝试使用窗口函数:
count(modelo_venta) * 100.0 / sum(count(modelo_venta)) over () as porcentaje,
问题是您想根据查询结果进行计数,而不是整个表。
推荐阅读
- c# - 发送到 Outlook 时更改 GridView 表格样式
- ef-core-2.2 - EF Core 2.2 - 如何使用脚手架保留上下文
- jquery - 如何优化将大量元素动态添加到网页中
- macos - 我们可以在我们的应用程序运行时禁用用户与 mac 中其他应用程序的交互吗?
- machine-learning - 如何缩放基于变化的特征百分比,以便模型“相似”地查看它们
- user-controls - 当调用其容器的 Refresh() 方法时,是否应该自动调用 UserControl 的 Refresh() 方法?
- flutter - 是否可以在 OrientationBuilder 中包装 SliverGrid(是 CustomScrollView 的子项)?
- asp.net-web-api2 - 如何在 odata 控制器中实现与常规 PUT 相同的 POST 以更新实体
- azure - 当我想在 Postman 中访问受 Azure AD 保护的 Azure 函数 API 时,为“范围”选项赋予什么价值
- xml - 需要帮助将 XML 从行转换为 XML 输出中的元素