我正在使用bigquery按列值的频率计算百分比。但是,有些值可能为零,因此查询肯定会返回error
(division by zero: 0 / 0)
在这种情况下,如何应用iferror类型(x/y,null)?所以查询将返回空值作为结果而不是错误?
SELECT
User_ID,
ROUND(SUM(CASE WHEN Name LIKE '%MIKE%' THEN 1 ELSE 0 END) / COUNT(Name) * 100 ,1) AS Percentage_of_MIKE,
FROM
table
GROUP BY
User_ID
尝试:
ROUND(SAFE_DIVIDE(SUM(CASE WHEN Name LIKE '%MIKE%' THEN 1 ELSE 0 END) / COUNT(Name) * 100 ,1)) AS Percentage_of_MIKE,
3条答案
按热度按时间yftpprvb1#
在这种情况下,您可以只使用安全除法函数
比如下面的例子
vbopmzt12#
此错误表示您有
User_ID
谁的一切Name
s是NULL
. 所以你们部门的分母是0
(COUNT(Name)
计数非-null
价值观Name
),你得到的除法是0
错误。避免这种情况的一个简单方法是
AVG()
:ccrfmcuu3#
我倾向于使用
NULLIF()
为此,因为我喜欢使用除法运算符进行除法: