繁体   English   中英

CASE WHEN THEN 如何处理 NULL 值

[英]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,
...

col2NULL时,此查询的输出是什么? 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM