在Cloudera中计算比率:含0、1、NULL变量的分母确定咨询
计算包含NULL值的比率解决方案
嘿,这个问题我太懂了!咱们一步步理清楚:
你已经用sum(COALESCE(call_received, 0))把NULL转换成0后求和,这个结果其实就是所有call_received取值为1的记录总数(毕竟0和转成0的NULL对求和没任何贡献)。
要确保分母能涵盖所有数据(不管call_received是0、1还是NULL的记录都算进去),你需要用COUNT(*)作为分母。因为COUNT(*)会统计表里的每一行,完全忽略列值是否为NULL,刚好覆盖你所有的目标记录范围。
举个实际例子更直观:
假设你的数据集是这样的:
| call_received |
|---|
| 1 |
| 0 |
| NULL |
| 1 |
那sum(COALESCE(call_received, 0))的结果是2,COUNT(*)是4,最终比率就是2/4=0.5(也就是50%),这正好是收到呼叫的记录占总记录的比例,完全符合你的需求。
如果之后你需要调整比率的统计范围(比如只算非NULL的记录),那分母可以换成COUNT(call_received),但根据你“涵盖所有数据”的要求,COUNT(*)绝对是最准确的选择。
内容的提问来源于stack exchange,提问作者Anna
相关产品推荐
相关产品推荐

