假设我在Spark上执行的SELECT子句中有以下代码:
...
MEAN(CASE
WHEN (col1 = 'A'
AND (col3 = 'A' OR col4 = 'B')) THEN col2
END) AS testing,
...
当col2
为NULL
时,此查询的输出是什么? col2=NULL
函数会忽略包含MEAN
的行吗?
答案 0 :(得分:1)
结果将为NULL
。它将具有col2
类型-在某些数据库中(或将结果保存到表中),这可能很重要。
什么是MEAN()
函数?要计算平均值,请使用AVG()
。这是用于计算SQL平均值的标准函数。
答案 1 :(得分:1)
免责声明-不知道Apache Spark!
我创建了一个SQL提琴-http://sqlfiddle.com/#!9/6f7d5e/3。
如果col2为null,则除非所有匹配记录均为null,否则它不包括在平均值中。
答案 2 :(得分:0)
我相信您的意思是AVG
。它会将忽略NULL值。因此,如果case表达式的结果是:
100
200
300
NULL
那么结果将是(100 + 200 + 300) / 3 = 200
而不是(100 + 200 + 300) / 4
。如果case表达式的结果是:
NULL
NULL
NULL
NULL
然后结果将为NULL而不是0。