我正在尝试使用NULLIF来避免在使用postgres的 over 窗口函数时出现除零错误。
它会在“over”或“near”附近抛出“语法错误。”
我正在使用此查询:
SELECT
dlo.nombre_cadena, dpr.marca_producto,
sum(rep.mes_33_uni) / NULLIF(sum(sum(rep.mes_33_uni)), 0) over (partition by dpr.marca_producto) AS porcentajep,
FROM
rpro_dim.reporte33_full rep
JOIN rpro_dim.dim_productos_retail dpr ON dpr.id_dim_prod_retail = rep.id_dim_prod_retail
JOIN rpro_dim.dim_locales dlo ON dlo.id_dim_local = rep.id_dim_localgroup by
dlo.nombre_cadena, dpr.marca_producto
order by dlo.nombre_cadena, dpr.marca_producto
答案 0 :(得分:1)
使用
NULLIF(sum(sum(rep.mes_33_uni)), 0) over (partition by dpr.marca_producto) -- error!
您正尝试将nullif()
作为窗口函数执行。
您应该将整个表达式作为nullif()
的参数:
NULLIF(sum(sum(rep.mes_33_uni)) over (partition by dpr.marca_producto), 0)