[英]How does CASE WHEN THEN treat NULL values
假设我在 Spark 上执行的 SELECT 子句中有以下代码段:
...
MEAN(CASE
WHEN (col1 = 'A'
AND (col3 = 'A' OR col4 = 'B')) THEN col2
END) AS testing,
...
当col2
为NULL
时,此查询的输出是什么? MEAN
函数是否会忽略包含col2=NULL
的行?
结果将为NULL
。 它将具有col2
类型-在某些数据库中(或者将结果保存到表中),这可能很重要。
什么是MEAN()
函数? 要计算平均值,请使用AVG()
。 这是用于在SQL中计算平均值的标准函数。
免责声明-不知道Apache Spark!
我创建了一个SQL Fiddle- http: //sqlfiddle.com/#!9/6f7d5e/3。
如果col2为null,则它不包括在平均值中,除非所有匹配记录均为null。
我相信您的意思是AVG
。 它会忽略NULL值。 因此,如果case表达式的结果是:
100
200
300
NULL
然后,结果将是(100 + 200 + 300) / 3 = 200
而不是(100 + 200 + 300) / 4
。 如果case表达式的结果是:
NULL
NULL
NULL
NULL
然后结果将为NULL而不是0。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.