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 DISTINCT
não tem nenhum efeito na MAX()
função.
Observe que isso DISTINCT
tem efeitos em outras funções agregadas , como COUNT()
,, SUM()
e AVG()
.
Exemplos de funções MySQL MAX()
Usaremos a payments
tabela 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 )
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 WHERE
clá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
WHERE
cláusula para obter apenas os pagamentos cujo ano seja 2004. Usamos aYEAR()
função para extrair o ano da data do pagamento. - Em seguida, use a
MAX()
função daSELECT
cláusula para encontrar o maior valor de pagamentos em 2004.
Esta imagem mostra a saída:
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 )
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 BY
clá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 )
Se você não tiver um índice na amount
coluna, a segunda consulta com a LIMIT
cláusula é mais rápida porque examina todas as linhas da payments
tabela, enquanto a primeira consulta examina todas as linhas da payments
tabela duas vezes, primeiro uma vez na subconsulta e outra na a consulta externa.
No entanto, se a amount
coluna estiver indexada, a primeira consulta será executada mais rapidamente.
4) Usando MySQL MAX() com GROUP BY
exemplo de cláusula
Para encontrar o valor máximo para cada grupo, você usa a MAX
função com a GROUP BY
clá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 )
Neste exemplo:
- Primeiro, a
GROUP BY
clá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 HAVING
cláusula
Ao usar a MAX()
função com a GROUP BY
clá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 HAVING
clá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 )
Se quiser ver os nomes dos clientes em vez dos números, você pode juntar a payments
tabela com a customers
tabela:
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:
Resumo
- Use a
MAX()
função para encontrar o valor máximo em um conjunto de valores.