# MAX

MAX é uma função de agregação que calcula o valor máximo de uma expressão para um conjunto de valores (consulte Agregações (funções de conjunto)). MAX é permitido apenas nas expressões que resultam em tipos de dado nativos (incluindo CHAR, VARCHAR, DATE, TIME, CHAR FOR BIT DATA, etc.).

#### Sintaxe

    MAX ( [ DISTINCT | ALL ] Expressão )

O qualificador DISTINCT elimina as linhas duplicadas. O qualificador ALL mantém as linhas duplicadas. Estes qualificadores não produzem efeito na expressão MAX. Somente é permitida uma expressão de agregação DISTINCT por ExpressãoSeleção. Por exemplo, a seguinte consulta não é permitida:

    SELECT COUNT (DISTINCT TEMPO_VÔO), MAX (DISTINCT MILHAS)
    FROM VÔOS

A Expressão pode conter várias referências a colunas ou expressões, mas não pode conter outra agregação ou subconsulta. Deve ter como resultado um tipo de dado nativo. Portanto, podem ser chamados métodos que têm como resultado tipos de dado nativos (Por exemplo, um método que retorna java.lang.Integer ou int tem como resultado um INTEGER.) Se uma expressão for avaliada como NULL, a agregação saltará este valor.

Para os tipos de dado CHAR, VARCHAR e LONG VARCHAR, o número de espaços em branco no final do valor pode afetar como MAX é avaliada. Por exemplo, se 'z' e 'z ' estiverem armazenados em uma coluna, não pode ser controlado qual dos dois será retornado como máximo, porque o espaço em branco não possui valor.

O tipo de dado do resultado é idêntico ao da expressão em que opera (nunca estoura).

    -- encontrar a data mais tarde da tabela DISPONIBILIDADE_VÔO
    SELECT MAX (DATA_VÔO) FROM DISPONIBILIDADE_VÔO

    -- encontrar o vôo mais longo a partir de cada aeroporto,
    -- mas somente quando o vôo mais longo tiver mais de 10 horas
    SELECT MAX(TEMPO_VÔO), AEROPORTO_ORIGEM
    FROM VÔOS
    GROUP BY AEROPORTO_ORIGEM
    HAVING MAX(TEMPO_VÔO) > 10

Tópico pai: Funções nativas