Функция MAX () возвращает наибольшее значение из выбранного столбца, но SELECT MAX (A) ОТ ГДЕ a> 1000 возвращает NULL, почему? - PullRequest
0 голосов
/ 06 ноября 2018

Таблица T существует с одним столбцом A, имеющим 4 строки со значениями - 100, 200, NULL, 300.

Что выдает следующий запрос?

SELECT MAX(A) FROM t WHERE a>1000;

Варианты:

  • 300
  • NULL
  • без строк
  • Ошибка брошена

Правильный ответ - NULL. Моя интерпретация заключается в том, что запрос должен возвращать без строк, но правильный ответ - NUll.

Может кто-нибудь объяснить, пожалуйста?

Ответы [ 2 ]

0 голосов
/ 06 ноября 2018

Условие WHERE не удовлетворяет ни одной строке в таблице, поэтому

select a
from t
where a > 1000;

не возвращает строк.

Однако максимальное значение «ничто» равно NULL.

В SQL NULL - это отсутствие информации. Это естественный выбор, когда база данных не может найти данные.

Агрегаты типа max(), min() или count() всегда будут возвращать ровно одну строку, если используются без GROUP BY

0 голосов
/ 06 ноября 2018

NULL - правильный ответ. MAX не может вернуть ноль строк. NULL подходит, потому что нет строк> 1000.

...