Voltar para a lista de artigos Artigos
6 minutos de leitura

A função SQL MIN()

O SQL tem uma variedade de ferramentas de agregação poderosas, incluindo a funçãoSQL MIN(). Este artigo é um guia de referência rápida para extrair e usar valores mínimos em suas consultas.

No atual ambiente de negócios acirrado, é fundamental poder analisar os dados de sua organização de forma eficaz para tomar decisões informadas. As funções agregadas do SQL permitem que você realize todos os tipos de análises estatísticas em seus dados.

Este artigo é um guia de referência para a função SQL MIN(), que extrai o menor item de uma coluna de dados.

Se você é iniciante em SQL, talvez tenha interesse em nosso curso interativo SQL para Iniciantes. A partir do nível iniciante, você se tornará proficiente nos recursos mais úteis do SQL. Você aprenderá os conceitos de bancos de dados relacionais, como extrair dados e como analisá-los usando agrupamentos e agregados.

Você se conectará a um banco de dados por meio do navegador para praticar suas novas habilidades com 129 exercícios interativos. O curso leva cerca de 10 horas para ser concluído.

Agora, vamos voltar à função MIN(). Começaremos examinando o conjunto de dados.

Dados de amostra

Todos os exemplos deste artigo usam os dados abaixo, que são um subconjunto do banco de dados de amostra de funcionários do MySQL. Os dados são mantidos em uma tabela chamada employee_data.

emp_nobirth_datefirst_namelast_namesalarydept_nameterm_date
100021984-06-02BezalelSimmel72527Sales2022-05-31
100041974-05-01ChirstianKoblick74057Production
100061973-04-20AnnekePreusig60098Development
100081978-02-19SaniyaKalloufi52668Development
100121980-10-04PatricioBridgland54794Development
100141976-02-12BerniGenin60598Development
100161981-05-02KazuhitoCappelletti77935Sales2020-12-31

Exemplos simples da função SQL MIN()

Exemplo 1: Função MIN() simples

A função MIN() extrai o valor mínimo de uma coluna. Em sua forma mais simples, você poderia usar a consulta abaixo para responder à pergunta: Quanto o funcionário com o salário mais baixo ganha anualmente?

SELECT 
  MIN(salary) 
FROM employee_data;

Isso gera os seguintes resultados:

min(salary)
52668

Observe que a função MIN(), como todos os outros agregados SQL, é sempre seguida por um nome de coluna entre colchetes. Nesse exemplo, o SQL pesquisa em toda a tabela e extrai o valor mais baixo da coluna nomeada.

Exemplo 2: uso de MIN() com outras funções de agregação

É claro que você pode incluir outras funções agregadas em seus resultados, como esta:

SELECT 
  MIN(salary), 
  MAX(salary), 
  AVG(salary) 
FROM employee_data;

Seus resultados teriam a seguinte aparência:

min(salary)max(salary)avg(salary)
526687793564668.143

Para obter mais exemplos, leia Funções SQL MIN() e MAX() explicadas em 6 exemplos.

Exemplo 3: uso de MIN() com uma expressão aritmética

Você também pode usar expressões aritméticas com a função MIN(). Se você quisesse ver o salário mínimo mensal em vez do salário mínimo anual, sua consulta seria:

SELECT MIN(salary/12) AS min_monthly_salary
FROM employee_data;

O resultado dessa consulta é:

min_monthly_salary
4389

Exemplos não padronizados da função MIN()

Exemplo 4: Uso de MIN() em colunas de data/data/hora

A função MIN() funciona igualmente bem com dados não numéricos.

Ela pode ser usada com tipos de dados de data e data e hora para extrair a primeira data ou hora. Se você quisesse encontrar a data de nascimento do funcionário mais jovem da empresa, sua consulta seria semelhante a esta:

SELECT MIN(birth_date) 
FROM employee_data;

Isso gera os seguintes resultados:

min(birth_date)
20/4/1973

Exemplo 5: uso da função SQL MIN() em colunas de texto

Para tipos de dados de cadeia de caracteres como CHAR, VARCHAR e TEXT, a função SQL MIN() extrai o primeiro valor em ordem alfabética da coluna.

Se você quisesse encontrar o primeiro nome de departamento em ordem alfabética na tabela employee_data tabela, a consulta seria:

SELECT MIN(dept_name) 
FROM employee_data

Aqui estão os resultados:

min(dept_name)
Development

Você perceberá que, embora vários funcionários pertençam ao departamento de Desenvolvimento, o nome do departamento aparece apenas uma vez nos resultados.

Uso da função SQL MIN() com GROUP BY

A função MIN(), como todas as funções de agregação do SQL, pode ser usada em conjunto com a cláusula GROUP BY. Essa cláusula informa ao SQL para agrupar linhas semelhantes e gerar uma única linha para cada grupo. Por exemplo, se você agrupasse os dados de amostra por departamento, o conjunto de resultados conteria uma linha para cada departamento.

Se você ainda não está familiarizado com a cláusula GROUP BY e como usá-la, estes 5 exemplos de GROUP BY podem ajudá-lo.

Quando você usa a função MIN() junto com a cláusula GROUP BY, você vê o valor mínimo em cada grupo. Por exemplo, se você quisesse ver o salário mais baixo em cada departamento, sua consulta seria semelhante a esta:

SELECT 
  dept_name, 
  MIN(salary) 
FROM employee_data 
GROUP BY dept_name;

Os resultados da consulta seriam os seguintes:

dept_nameMIN(salary)
Sales72527
Production74057
Development52668

Talvez você também queira usar a cláusula ORDER BY. Se você quisesse que os resultados estivessem em ordem de salário mínimo, sua consulta seria:

SELECT 
  dept_name, 
  MIN(salary) 
FROM employee_data 
GROUP BY dept_name
ORDER BY MIN(salary);

O conjunto de resultados aparecerá na ordem do salário mínimo, do menor para o maior:

dept_nameMIN(salary)
Development52668
Sales72527
Production74057

Se achar que precisa praticar o agrupamento de dados em SQL, você encontrará alguns exercícios úteis em 10 GROUP BY Trilha de Práticas em SQL Exercises with Solutions.

Uso da função MIN() em HAVING

Você pode usar funções de agregação para filtrar o conjunto de resultados. Normalmente, os critérios de seleção são definidos por meio de uma cláusula WHERE, mas não é possível usar WHERE para filtrar por um agregado. Em vez disso, é necessário usar a cláusula HAVING.

Para encontrar todos os departamentos em que o salário anual mínimo é maior que 60 mil, sua consulta seria:

SELECT dept_name, MIN(salary) 
FROM employee_data 
GROUP BY dept_name
HAVING MIN(salary) > 60000
ORDER BY MIN(salary);

Observe que a cláusula HAVING deve ser usada com a cláusula GROUP BY e que ela é colocada após a cláusula GROUP BY, mas antes da cláusula ORDER BY.

Os resultados são:

dept_nameMIN(salary)
Sales72527
Production74057

Os valores nulos afetam a função MIN()?

A função SQL MIN() ignora todas as linhas que têm um valor nulo quando calcula o mínimo. O valor retornado é, portanto, o menor valor não nulo na coluna especificada.

Nos dados de amostra, apenas duas linhas têm valores na data de término. Em todas as outras linhas, essa coluna é definida como NULL. Se você procurou a data de término mínima, deverá obter o menor valor não nulo. Vamos experimentar:

SELECT 
  MIN(term_date) 
FROM employee_data;

Isso retorna a menor data, ignorando os valores nulos:

MIN(term_date)
31/12/2020

A única vez que a função MIN() retornaria um NULL seria se todos os valores da coluna fossem NULL.

Continuando com a função MIN() do SQL

Exploramos os usos de MIN(), mas sua jornada de aprendizado está apenas começando; há muito mais a descobrir! Para obter um guia rápido sobre como usar a função SQL MIN(), consulte estes dois livros de receitas:

Não há nada como a solução prática de problemas para aprender qualquer tópico muito bem. Nossa Trilha de Práticas em SQL apresenta uma série de desafios semelhantes aos que você encontrará no mundo real, com ajuda sempre disponível se você tiver dificuldades.

Por fim, o site LearnSQL.com.br tem uma grande variedade de cursos criados para ajudá-lo em todas as etapas de sua jornada de aprendizado. Se você quer mesmo se tornar um especialista em SQL, recomendo nossa trilha de aprendizado SQL de A a Z. Essa trilha consiste em 7 cursos interativos que o levam do iniciante às funções avançadas.

Dê o próximo passo e impulsione sua carreira tornando-se um especialista em SQL!