Resumo : neste tutorial, você aprenderá como usar o MySQL GREATEST
e LEAST
funções para encontrar o maior e o menor valor de dois ou mais campos, respectivamente.
Introdução às funções GREATEST e LEAST do MySQL
Ambas GREATEST
as LEAST
funções e recebem N argumentos e retornam o maior e o menor valor, respectivamente. O seguinte ilustra a sintaxe da função GREATEST
and LEAST
:
GREATEST(value1, value2, ...);
LEAST(value1,value2,...);
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Os argumentos podem ter tipos de dados mistos . As seguintes regras de comparação são aplicadas a ambas as funções:
- Se algum argumento for NULL , ambas as funções retornarão NULLs imediatamente sem fazer qualquer comparação.
- Se funções forem usadas nos contextos INT ou REAL, ou se todos os argumentos tiverem valor inteiro ou valor REAL, eles serão comparados como INT e REAL, respectivamente.
- Se os argumentos consistirem em números e strings, as funções irão compará-los como números.
- Se pelo menos um argumento for uma string não binária (caractere), as funções compararão os argumentos como strings não binárias.
- Em todos os outros casos, as funções comparam argumentos como cadeias binárias.
Os exemplos a seguir demonstram como as funções GREATEST
e LEAST
funcionam.
SELECT GREATEST(10, 20, 30), -- 30
LEAST(10, 20, 30); -- 10
SELECT GREATEST(10, null, 30), -- null
LEAST(10, null , 30); -- null
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
MySQL MAIORES e MENOS exemplos
Vamos criar uma nova tabela para demonstração.
CREATE TABLE IF NOT EXISTS revenues (
company_id INT PRIMARY KEY,
q1 DECIMAL(19 , 2 ),
q2 DECIMAL(19 , 2 ),
q3 DECIMAL(19 , 2 ),
q4 DECIMAL(19 , 2 )
);
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
A revenues
tabela consiste em company_id
uma chave primária e quatro colunas para armazenar as receitas da empresa em cada trimestre.
A instrução a seguir insere duas linhas na revenues
tabela.
INSERT INTO revenues(company_id,q1,q2,q3,q4)
VALUES (1,100,120,110,130),
(2,250,260,300,310);
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Para obter as receitas mais altas e mais baixas de cada empresa, você usa as funções GREATEST
e LOWEST
da seguinte forma:
SELECT
company_id,
LEAST(q1, q2, q3, q4) low,
GREATEST(q1, q2, q3, q4) high
FROM
revenues;
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Ambas GREATEST
as LEAST
funções e retornam NULLs se algum argumento for NULL, o que pode não ser o que você esperava.
Para evitar isso, você pode usar a IFNULL
função para tratar NULL como zero para realizar a comparação numérica.
A instrução a seguir insere uma nova linha na revenues
tabela com um valor NULL na q4
coluna.
INSERT INTO revenues(company_id,q1,q2,q3,q4)
VALUES (3,100,120,110,null);
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Se você usar as funções GREATEST
e LEAST
para consultar dados, obterá o resultado conforme planejado.
SELECT
company_id,
LEAST(q1, q2, q3, q4) low,
GREATEST(q1, q2, q3, q4) high
FROM
revenues;
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Como você pode ver, os valores baixo e alto do ID da empresa 3 são NULOS.
Para evitar isso, você pode usar a IFNULL
função da seguinte forma:
SELECT
company_id,
LEAST(IFNULL(q1, 0),
IFNULL(q2, 0),
IFNULL(q3, 0),
IFNULL(q4, 0)) low,
GREATEST(IFNULL(q1, 0),
IFNULL(q2, 0),
IFNULL(q3, 0),
IFNULL(q4, 0)) high
FROM
revenues;
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Neste tutorial, você aprendeu como usar o MySQL GREATEST
e LEAST
funções para encontrar os valores maiores e menores em uma lista de valores.