MySQL MAIOR e MENOS

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 GREATESTas LEASTfunções e recebem N argumentos e retornam o maior e o menor valor, respectivamente. O seguinte ilustra a sintaxe da função GREATESTand 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 GREATESTe LEASTfuncionam.

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 revenuestabela consiste em company_iduma chave primária e quatro colunas para armazenar as receitas da empresa em cada trimestre.

A instrução a seguir insere duas linhas na revenuestabela.

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 GREATESTe LOWESTda 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 )
MySQL MAIOR e MENOS exemplo

Ambas GREATESTas LEASTfunçõ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 IFNULLfunção para tratar NULL como zero para realizar a comparação numérica.

A instrução a seguir insere uma nova linha na revenuestabela com um valor NULL na  q4coluna.

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 GREATESTe LEASTpara 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 IFNULLfunçã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 )
Exemplo MySQL GREATEST e LEAST com IFNULL

Neste tutorial, você aprendeu como usar o MySQL GREATESTe LEASTfunções para encontrar os valores maiores e menores em uma lista de valores.

Deixe um comentário

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