Как СЛУЧАЙ, КОГДА ТОГДА обрабатывает значения NULL - PullRequest
0 голосов
/ 29 апреля 2019

Предполагая, что у меня есть следующий фрагмент кода в предложении SELECT, который выполняется в Spark:

...
MEAN(CASE
         WHEN (col1 = 'A'
               AND (col3 = 'A' OR col4 = 'B')) THEN col2
     END) AS testing,
...

Что будет вывод этого запроса, когда col2 равен NULL?Строки, содержащие col2=NULL, игнорируются функцией MEAN?

Ответы [ 3 ]

1 голос
/ 29 апреля 2019

Отказ от ответственности - не знаю Apache Spark!

Я создал SQL Fiddle - http://sqlfiddle.com/#!9/6f7d5e/3.

Если col2 равно нулю, оно не включается в среднее значение, если только все подходящие записи не равны нулю.

1 голос
/ 29 апреля 2019

Результат будет NULL.Он будет иметь тип col2 - это может иметь значение в некоторых базах данных (или если вы сохраняете результат в таблицу).

Что такое функция MEAN()?Чтобы рассчитать среднее значение, используйте AVG().Это стандартная функция для вычисления средних значений в SQL.

0 голосов
/ 29 апреля 2019

Я полагаю, вы имели в виду AVG. будет игнорировать значения NULL.Поэтому, если результат выражения case равен:

100
200
300
NULL

, тогда результатом будет (100 + 200 + 300) / 3 = 200 вместо (100 + 200 + 300) / 4.И если результат выражения case равен:

NULL
NULL
NULL
NULL

, то результатом будет NULL вместо 0.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...