这里有一个有用的答案,向我展示了NULLIF函数,以避免0/0错误的除法,但现在,当一个数字为0时,百分比仍然显示为NULL。我已经附上了下面的代码和输出的图像。有什么简单的方法吗?
SELECT
a.Game,
IFNULL(SUM(a.ps_global), 0) AS ps_sales,
IFNULL(SUM(a.xbox_global), 0) AS xbox_sales,
SUM(a.ps_global / NULLIF((a.xbox_global + a.ps_global), 0) * 100) AS ps_pct,
SUM(a.xbox_global / NULLIF((a.ps_global + a. xbox_global), 0) * 100) AS xbox_pct
FROM
aka-data-analysis-test.games.DF_A AS a
INNER JOIN
aka-data-analysis-test.games.DF_B AS b
ON a.Game = b.Name
GROUP BY
a.Game输出:

谢谢大家
发布于 2022-10-02 13:27:55
如果其中任何一个为null,则B+C将为null,因此一种方法可以是:
SUM(a.ps_global / NULLIF((IFNULL(a.xbox_global,0) + IFNULL(a.ps_global,0)), 0) * 100) AS ps_pct,然而,我认为在这种情况下,您可能想要求和(A)/SUM(B+C),而不是SUM(A/(B+C)),因为比率之和很少有意义。
所以一个干净的方法是:
SAFE_DIVIDE(SUM(a.ps_global),SUM(IFNULL(a.xbox_global,0) + IFNULL(a.ps_global,0))) AS ps_pct如果您希望除法为0而不是null,您可以这样做:
IFNULL(SAFE_DIVIDE(SUM(a.ps_global),SUM(IFNULL(a.xbox_global,0) + IFNULL(a.ps_global,0))),0) AS ps_pcthttps://stackoverflow.com/questions/73925781
复制相似问题