首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用NULLIF()后显示为空的百分比-如何显示100%和0%?

问使用NULLIF()后显示为空的百分比-如何显示100%和0%?
EN

Stack Overflow用户
提问于 2022-10-02 12:23:06
回答 1查看 109关注 0票数 0

这里有一个有用的答案,向我展示了NULLIF函数,以避免0/0错误的除法,但现在,当一个数字为0时,百分比仍然显示为NULL。我已经附上了下面的代码和输出的图像。有什么简单的方法吗?

代码语言:javascript
复制
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

输出:

​

​

谢谢大家

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-10-02 13:27:55

如果其中任何一个为null,则B+C将为null,因此一种方法可以是:

代码语言:javascript
复制
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)),因为比率之和很少有意义。

所以一个干净的方法是:

代码语言:javascript
复制
SAFE_DIVIDE(SUM(a.ps_global),SUM(IFNULL(a.xbox_global,0) + IFNULL(a.ps_global,0))) AS ps_pct

如果您希望除法为0而不是null,您可以这样做:

代码语言:javascript
复制
IFNULL(SAFE_DIVIDE(SUM(a.ps_global),SUM(IFNULL(a.xbox_global,0) + IFNULL(a.ps_global,0))),0) AS ps_pct
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73925781

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档