SELECT
p.id_pedido
, p.QuantidadeVendida AS quantidade_vendida
, CEILING(p.QuantidadeVendida / 8) AS quantidade_caixas
FROM tabelapedidos AS p
;
SELECT
p.id_pedido
, p.QuantidadeVendida AS quantidade_vendida
, CEILING(p.QuantidadeVendida / 8) AS quantidade_caixas
FROM tabelapedidos AS p
;
Olá, Carlos. Como vai?
Parabéns por mais uma resolução concluída com sucesso! O uso da função CEILING foi a escolha perfeita para esse cenário logístico.
Em situações reais de negócio, como o cálculo de embalagens ou caixas para transporte, não podemos trabalhar com números fracionados para baixo, pois isso deixaria produtos de fora. A função CEILING resolve isso de forma elegante ao sempre arredondar para o número inteiro superior mais próximo.
Para complementar sua análise e agregar valor ao seu estudo sobre funções de arredondamento no SQL, vale a pena comparar o CEILING com outras duas funções numéricas muito comuns:
CEILING, o FLOOR arredonda sempre para baixo, para o maior inteiro que seja menor ou igual ao número atual. Se você tivesse 5 itens e dividisse por 8, o FLOOR resultaria em 0 caixas.Um ponto interessante de notar na sua imagem é que, no pedido P001, você tem 5 itens vendidos. Ao dividir por 8, o resultado é 0.625. Como uma caixa incompleta ainda ocupa uma unidade de envio, o CEILING transformou corretamente esse valor em 1 caixa.
Como boa prática, quando trabalhamos com divisões em alguns bancos de dados (como o SQL Server), pode ser necessário garantir que a divisão não seja estritamente entre inteiros para evitar que o banco descarte as casas decimais antes do arredondamento. Uma forma segura de escrever seria:
SELECT
p.id_pedido,
p.QuantidadeVendida AS quantidade_vendida,
CEILING(p.QuantidadeVendida / 8.0) AS quantidade_caixas
FROM tabelapedidos AS p;
Adicionar o .0 força o SQL a tratar o divisor como um número decimal (float/numeric), garantindo a precisão do cálculo antes do arredondamento pelo CEILING.
Espero que possa ter lhe ajudado!