Voltar para a lista de artigos Artigos
6 minutos de leitura

Como Funciona o Operador de Divisão em SQL

Em SQL, o operador de divisão é usado para dividir uma expressão ou número por outro. Este artigo mostrará como utilizar esse operador e os erros comuns que você deve evitar.

O operador de divisão em SQL é considerado um operador aritmético. Os operadores aritméticos são a adição (+), subtração (-), multiplicação (*), divisão (/) e módulo (%). Neste artigo, iremos focar no operador de divisão, listando as regras que devem ser seguidas e alguns erros comuns ao tentar realizar uma divisão em SQL.

A sintaxe para o operador de divisão em SQL é a seguinte:

SELECT <expressão> / <expressão>
FROM tabela
[WHERE expressão]

Note que a inclusão da cláusula WHERE é inteiramente opcional. O operador de divisão pode ser usado em qualquer lugar onde exista uma expressão. Isto significa que, no SQL, o operador de divisão pode ser usado com:

  • SELECT.
  • WHERE.
  • HAVING.
  • ORDER BY.
  • Ou como parte de uma função.

Se você tem dúvidas sobre qualquer uma dessas expressões, confira a Trilha de Práticas em SQL do LearnSQL.com, uma forma eficiente e divertida de aperfeiçoar suas habilidades em SQL.

O exemplo mais simples do operador de divisão é:

SELECT 10 / 2

Ao executar esta consulta, o resultado será exibido - neste caso, 5. No entanto, é mais provável que você trabalhe com inteiros existentes em colunas das tabelas do seu banco de dados.

Vejamos um exemplo. Usaremos uma tabela chamada estoque, contendo alguns alimentos, junto com o preco e a quantidade deles.

estoque

itemprecoquantidade
Ovos1512
Leite34
Farinha52
Pão103

Vamos aplicar o operador de divisão a uma coluna inteira da nossa tabela e observar o que acontece. Considere a seguinte consulta SQL:

SELECT quantidade, quantidade / 2 AS 'resultado'
FROM estoque

Com esta consulta, estamos selecionando a coluna quantidade, mostrando então o resultado da divisão do valor quantidade em nossa coluna resultado que contém o resultado de quantidade / 2. Vamos executar esta consulta e observar os resultados:

quantidaderesultado
126
42
21
31

Os resultados parecem dentro do que esperaríamos, exceto pela última linha. A resposta certa não deveria ser 3 / 2 = 1,5 ?! O resultado mostrado pelo SQL Server mostra um valor igual a 1. Dependendo da variante do SQL que você está usando, o operador da divisão pode tratar a divisão inteira de forma diferente . Vamos esclarecer isto na próxima seção!

Como é Feita a Divisão de Inteiros em SQL?

As divisões de inteiros podem se comportar de formas diferentes dependendo do sistema de gerenciamento de banco de dados SQL que você utiliza. Os usuários do MySQL e Oracle podem esperar ver o número real a ser mostrado com o tipo de dados de ponto flutuante, por exemplo, 3 / 2 = 1,5.

Entretanto, para usuários do SQL Server e PostgreSQL, a divisão de números inteiros é mais complexa. Você precisará se atentar a algumas regras ao dividir números cujas divisões não resultam em um número inteiro. Retomemos o exemplo anterior:

SELECT 3 / 2;

Quando executado no SQL Server ou PostgreSQL, o resultado desta consulta é 1, enquanto a maioria dos usuários esperaria 1,5. Por que isso acontece? O operador de divisão só trata a parte inteira do resultado ao dividir dois números inteiros. O resultado obtido é chamado de quociente. O resto não é tratado. Com a divisão de dois números inteiros, o resultado será quantas vezes um número irá para outro, de maneira uniforme.

Considere estes exemplos no SQL Server ou PostgreSQL:

Divisão ConsultaResultado
SELECT 10 / 33
SELECT 5 / 22
SELECT 11 / 61

Mude os Operandos para um Número Decimal ou de Ponto Flutuante

Isto só pode ser feito se a operação de divisão permitir. Se dois nomes de colunas estiverem envolvidos, este método não será possível; em vez disso, utilize o método CAST/CONVERT descrito abaixo. Você precisa conseguir acessar um dos números diretamente. O uso deste método é simples; basta mudar um ou ambos os operandos:

Divisão ConsultaResultado
SELECT 10.0 / 33.333333
SELECT 5 / 2.02.5
SELECT 11.0 / 6.01.833333

Também podemos aplicar este método ao método anterior, no caso da tabela estoque. Temos que atualizar nossa pergunta para o seguinte:

SELECT quantidade, quantidade / 2.0 AS 'resultado'
FROM estoque

Ao rodarmos essa consulta, obtemos um resultado semelhante ao anterior, mas com uma diferença chave.

quantidaderesultado
126.00000
42.00000
21.00000
31.50000

Isto é ideal se pudermos acessar e alterar um dos operandos diretamente. Entretanto, isso nem sempre é possível.

Usando CAST ou CONVERT em Colunas

Imagine que dividimos o valor da coluna de preço pela coluna de quantidade para um determinado item. Nossa consulta ficaria assim:

SELECT preço / quantidade
FROM estoque
WHERE item = 'Farinha'

A execução desta consulta gera um resultado igual a 2; este é um caso clássico de divisão de números inteiros. Vamos contornar isto usando o CAST em uma das nossas colunas.

Temos que atualizar nossa consulta para o seguinte:

SELECT CAST(preço AS DECIMAL(7,2)) / quantidade AS 'CAST(preço)/quantidade'
FROM estoque
WHERE item = 'Farinha'

Note que você também poderia usar CONVERT em vez de CAST. Você pode ler mais sobre a conversão de um número inteiro usando CAST e CONVERT aqui. A execução desta consulta gera um novo resultado:

CAST(preço)/quantidade
2.50000

Aí está! A operação CAST foi aplicada com sucesso à coluna de preços, transformando-a em um tipo de dado decimal para esta operação aritmética. Note que se a expressão aritmética contém mais de um operador, os operadores de multiplicação e divisão são resolvidos primeiro, seguidos pelos operadores de adição e subtração. Quando dois operadores têm a mesma prioridade, a expressão é resolvida da esquerda para a direita.

Você também deve saber do erro SQL "divisão por zero", independentemente do SGBD que você utiliza. Dividir por zero resulta em infinito, o que não é permitido no SQL, gerando uma mensagem de erro. Esta página muito útil com guias rápidos em SQL mostra como lidar com o erro de "divisão por zero". Confira!

Dividindo para Conquistar com o Operador de Divisão do SQL!

Neste artigo, mergulhamos fundo, mostrando as complexidades de se usar o operador de divisão em SQL para dividir números inteiros. Aprendemos como lidar com a divisão inteira para cada sistema de gerenciamento SQL, indo desde o SQL Server até o MySQL. Também abordamos o erro "divisão por zero" no SQL e apresentamos recursos que lhe permitirão lidar com este erro de forma mais fácil.

Como tudo na vida, a prática leva à perfeição! Se você tem interesse em aperfeiçoar suas habilidades em SQL através de desafios mensais incríveis, confira o desafio SQL do mês.