Функция teradata max

Какая строка будет возвращена, если мы воспользуемся следующей функцией?

 MAX (NAME)

Где у нас есть следующие две строки в столбце имени

1 ABC
2 ABC
0
0
91
2

Ответы 2

Ни один. Будет возвращен агрегат, который не привязан ни к одной строке, а скорее со значением Max(Name), которое, очевидно, должно быть ABC, поскольку это единственное доступное значение:

CREATE VOLATILE TABLE test
(
    f1 INTEGER,
    f2 CHAR(3)
) PRIMARY INDEX (f1) ON COMMIT PRESERVE ROWS;
INSERT INTO test VALUES (1, 'ABC');
INSERT INTO test VALUES (2, 'ABC');

SELECT MAX(f2) FROM test;

DROP TABLE test;

Что просто возвращает ABC

Вы можете думать об этом так. Если я напишу на доске номер 2 и попрошу вас сказать вслух, какой из них самый большой, вы скажете «2»; глупо было бы спрашивать «Какие« два »вы выбрали?».

@SantoshSuplepatil - Почему бы вам не попробовать и не убедиться? Вы обнаружите, что он возвращает то же самое, что и SELECT MAX(ID) FROM test;.

Rob Paller 13.09.2018 20:19

Верно. Вначале Case будет запускаться с получением промежуточного набора результатов, который содержит как 1, так и 2. Затем Max() ударит, возьмет 2 и вернет его.

JNevill 13.09.2018 20:29

Поскольку оба значения одинаковы и есть только две строки, вы получите вывод как «ABC», когда попытаетесь найти максимальное значение.

Другие вопросы по теме