8th Aug 2022 6 minutos de leitura Como Funciona o Operador de Divisão em SQL Andrew Bone sql aprender sql division Índice Como é Feita a Divisão de Inteiros em SQL? Mude os Operandos para um Número Decimal ou de Ponto Flutuante Usando CAST ou CONVERT em Colunas Dividindo para Conquistar com o Operador de Divisão do 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. Tags: sql aprender sql division