МАКС(isnull(поле,0)) или isnull(МАКС(поле),0) ?

1. pm74 199 22.05.19 08:13 Сейчас в теме
какой вариант правильнее 1 или 2
По теме из базы знаний
Вознаграждение за ответ
Показать полностью
Найденные решения
8. SlavaKron 22.05.19 08:46 Сейчас в теме +0.5 $m
могут быть разные результаты:
ВЫБРАТЬ
	МАКСИМУМ(ЕСТЬNULL(ВложенныйЗапрос.Поле, 0)) КАК Поле
ИЗ
	(ВЫБРАТЬ
		-2 КАК Поле
	
	ОБЪЕДИНИТЬ ВСЕ
	
	ВЫБРАТЬ
		-1
	
	ОБЪЕДИНИТЬ ВСЕ
	
	ВЫБРАТЬ
		NULL) КАК ВложенныйЗапрос
Показать

Даст 0
ВЫБРАТЬ
	ЕСТЬNULL(МАКСИМУМ(ВложенныйЗапрос.Поле), 0) КАК Поле
ИЗ
	(ВЫБРАТЬ
		-2 КАК Поле
	
	ОБЪЕДИНИТЬ ВСЕ
	
	ВЫБРАТЬ
		-1
	
	ОБЪЕДИНИТЬ ВСЕ
	
	ВЫБРАТЬ
		NULL) КАК ВложенныйЗапрос
Показать

Даст -1
dhurricane; pm74; +2 Ответить
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
4. ksen 22.05.19 08:39 Сейчас в теме
(1)ни 1 ни 2, в 1 случае проверка на макс 1 числа, во втором выбор максимума из 0 и переменной в который судя по контексту может лежать null
Макс(isnull(поле,0),0)
11. ZergKRSK 129 22.05.19 08:55 Сейчас в теме
(1) оба варианта имеют права на жизнь (не считая того что Макс там для красоты), всё зависит от задачи.
13. triviumfan 93 22.05.19 09:10 Сейчас в теме
(1) 2й вариант бессмысленен, т.к. isnull там лишнее.
14. dhurricane 22.05.19 09:15 Сейчас в теме
(13)
isnull там лишнее
Не всегда. Агрегатная функция МАКСИМУМ помимо прочего может применяться к таблице, где вовсе нет записей. В таком случае ее результатом будет NULL. Здесь-то и может пригодиться функция ISNULL.
triviumfan; +1 Ответить
2. acanta 22.05.19 08:33 Сейчас в теме
7. pm74 199 22.05.19 08:43 Сейчас в теме
(2) я до сегодня и не задумывался
3. ZergKRSK 129 22.05.19 08:37 Сейчас в теме
Максимум из одного значения? И какой смысл?
5. pm74 199 22.05.19 08:41 Сейчас в теме
(3) где я сказал про одно число? я говорю про синтаксис
6. ksen 22.05.19 08:42 Сейчас в теме
(5)Где вы говорили про синтаксис? оба варианта неверные. передается 1 переменная туда где ожидаются как минимум 2
9. pm74 199 22.05.19 08:48 Сейчас в теме
(6)" isnull" как бы подразумевает запрос .
10. ksen 22.05.19 08:51 Сейчас в теме
(9)Ничего это не подразумевает кроме того что в переменной может лежать null и его надо обработать, с таким же успехом там может лежать значение которое возвращает какая-то функция.
ZergKRSK; +1 Ответить
8. SlavaKron 22.05.19 08:46 Сейчас в теме +0.5 $m
могут быть разные результаты:
ВЫБРАТЬ
	МАКСИМУМ(ЕСТЬNULL(ВложенныйЗапрос.Поле, 0)) КАК Поле
ИЗ
	(ВЫБРАТЬ
		-2 КАК Поле
	
	ОБЪЕДИНИТЬ ВСЕ
	
	ВЫБРАТЬ
		-1
	
	ОБЪЕДИНИТЬ ВСЕ
	
	ВЫБРАТЬ
		NULL) КАК ВложенныйЗапрос
Показать

Даст 0
ВЫБРАТЬ
	ЕСТЬNULL(МАКСИМУМ(ВложенныйЗапрос.Поле), 0) КАК Поле
ИЗ
	(ВЫБРАТЬ
		-2 КАК Поле
	
	ОБЪЕДИНИТЬ ВСЕ
	
	ВЫБРАТЬ
		-1
	
	ОБЪЕДИНИТЬ ВСЕ
	
	ВЫБРАТЬ
		NULL) КАК ВложенныйЗапрос
Показать

Даст -1
dhurricane; pm74; +2 Ответить
12. triviumfan 93 22.05.19 09:08 Сейчас в теме +0.5 $m
(8) Потому что МАКСИМУМ игнорирует NULL.
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот