Função MySQL MAX()

Resumo : neste tutorial, você aprenderá como usar a MAX()função MySQL para obter o valor máximo em um conjunto de valores.

Introdução à função MySQL MAX()

No MySQL, a MAX()função retorna o valor máximo em um conjunto de valores.

A MAX()função é útil em muitos casos, como encontrar o número mais alto, o produto mais caro ou o maior pagamento dos clientes.

Aqui está a sintaxe da MAX()função:

MAX(DISTINCT expression)Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Nesta sintaxe:

  • expression: é uma coluna ou expressão cujo valor máximo você deseja encontrar.

Se você usar o DISTINCT operador, a MAX()função retornará o valor máximo de valores distintos, que é igual ao valor máximo de todos os valores. Isso significa que DISTINCTnão tem nenhum efeito na MAX()função.

Observe que isso DISTINCTtem efeitos em outras funções agregadas , como COUNT(),, SUM()e AVG().

Exemplos de funções MySQL MAX()

Usaremos a paymentstabela do banco de dados de exemplo para demonstrar a MAX()função.

1) Usando a função MySQL MAX() para encontrar o valor máximo em um exemplo de coluna

Este exemplo usa a MAX()função para retornar o maior valor de todos os pagamentos:

SELECT MAX(amount)
FROM payments;Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Experimente

Exemplo de função MySQL MAX

Neste exemplo, a MAX()função verifica todos os valores na coluna de valor da tabela de pagamentos para encontrar o maior valor.

2) Usando a função MySQL MAX() com WHEREcláusula

A declaração a seguir usa a MAX()função para encontrar o maior pagamento em 2004:

SELECT 
    MAX(amount) largest_payment_2004
FROM
    payments
WHERE
    YEAR(paymentDate) = 2004;Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Neste exemplo:

  • Primeiro, use uma condição na WHEREcláusula para obter apenas os pagamentos cujo ano seja 2004. Usamos a YEAR()função para extrair o ano da data do pagamento.
  • Em seguida, use a MAX()função da SELECTcláusula para encontrar o maior valor de pagamentos em 2004.

Esta imagem mostra a saída:

mysql max com cláusula where

3) Usando a função MAX() no exemplo de subconsulta

Para obter não apenas o maior valor de pagamento, mas também informações adicionais de pagamento, como número do cliente, número do cheque e data de pagamento, você pode utilizar a MAX()função em uma subconsulta, conforme demonstrado na consulta a seguir:

SELECT 
    *
FROM
    payments
WHERE
    amount = (SELECT 
            MAX(amount)
        FROM
            payments);Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Experimente

Como funciona.

  • A subconsulta retorna o maior valor de todos os pagamentos.
  • A consulta externa obtém o pagamento cujo valor é igual ao maior valor retornado da subconsulta e também outras informações de pagamento.

Outra maneira de fazer isso sem usar a MAX()função é classificar o conjunto de resultados em ordem decrescente usando a ORDER BYcláusula e obter a primeira linha do conjunto de resultados usando a LIMIT cláusula a seguir:

SELECT 
    *
FROM
    payments
ORDER BY amount DESC
LIMIT 1;Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Experimente

Se você não tiver um índice na amountcoluna, a segunda consulta com a LIMITcláusula é mais rápida porque examina todas as linhas da paymentstabela, enquanto a primeira consulta examina todas as linhas da paymentstabela duas vezes, primeiro uma vez na subconsulta e outra na a consulta externa.

No entanto, se a amountcoluna estiver indexada, a primeira consulta será executada mais rapidamente.

4) Usando MySQL MAX() com GROUP BYexemplo de cláusula

Para encontrar o valor máximo para cada grupo, você usa a MAXfunção com a GROUP BYcláusula.

Esta declaração usa para MAX()obter o maior pagamento de cada cliente:

SELECT 
    customerNumber, MAX(amount)
FROM
    payments
GROUP BY customerNumber
ORDER BY MAX(amount);Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Experimente

mysql max com cláusula group by

Neste exemplo:

  • Primeiro, a GROUP BYcláusula agrupa os pagamentos em grupos por número de cliente.
  • Segundo, a MAX()função retorna o maior pagamento de cada grupo.

5) Usando MySQL MAX()com HAVINGcláusula

Ao usar a MAX()função com a GROUP BYcláusula, você pode encontrar o valor máximo para cada grupo.

Se quiser filtrar grupos com base em uma condição, você pode usar a MAX()função em uma HAVINGcláusula.

A consulta a seguir encontra o maior pagamento de cada cliente; e com base nos pagamentos devolvidos, obtém apenas pagamentos cujos valores sejam superiores a 80,000.

SELECT 
    customerNumber, MAX(amount)
FROM
    payments
GROUP BY customerNumber
HAVING MAX(amount) > 80000
ORDER BY MAX(amount);Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Experimente

mysql max com exemplo de cláusula

Se quiser ver os nomes dos clientes em vez dos números, você pode juntar a paymentstabela com a customerstabela:

pagamentos de clientes
SELECT 
    customerName, 
    MAX(amount)
FROM
    payments
INNER JOIN customers USING (customerNumber)    
GROUP BY 
    customerNumber
HAVING 
    MAX(amount) > 80000
ORDER BY 
    MAX(amount);Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Aqui está a saída:

mysql max com junção interna

Resumo

  • Use a MAX()função para encontrar o valor máximo em um conjunto de valores.

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *