Arredondamento SQL

24/08/2017

0

Olá,
Em consulta SQL
Deparando com uma situação em que o retorno é fracionado, exemplo:
0,1687
0,1219
1,6782
1,0102
2,1349
2,7910

Necessitamos de uma maneira que o retorno seja para o próximo número inteiro, quando houver casa decimal maior que 0,0001.
retorno do exemplo acima seria:
1
1
2
2
3
3

Att.
Tiago

Tiago

Responder

Post mais votado

25/08/2017

Encontrei a Solução! Utilizando a função CEIL() resolveu!

No link: https://stackoverflow.com/questions/12361220/how-to-round-down-to-nearest-integer-in-mysql

Use FLOOR(), if you want to round your decimal to the lower integer. Examples:

FLOOR(1.9) => 1
FLOOR(1.1) => 1

Use ROUND(), if you want to round your decimal to the nearest integer. Examples:

ROUND(1.9) => 2
ROUND(1.1) => 1

Use CEIL(), if you want to round your decimal to the upper integer. Examples:

CEIL(1.9) => 2
CEIL(1.1) => 2


Obrigado!

Tiago

Tiago
Responder

Mais Posts

24/08/2017

Luiz Santos

Bom dia Tiago.
Veja se te atende.


SELECT CAST(0.1687 AS INT) + 1 UNION ALL
SELECT CAST(0.1219 AS INT) + 1 UNION ALL
SELECT CAST(1.6782 AS INT) + 1 UNION ALL
SELECT CAST(1.0102 AS INT) + 1 UNION ALL
SELECT CAST(2.1349 AS INT) + 1 UNION ALL
SELECT CAST(2.7910 AS INT) + 1



Grande abraço
Responder

24/08/2017

Tiago

Bom dia Tiago.
Veja se te atende.


SELECT CAST(0.1687 AS INT) + 1 UNION ALL
SELECT CAST(0.1219 AS INT) + 1 UNION ALL
SELECT CAST(1.6782 AS INT) + 1 UNION ALL
SELECT CAST(1.0102 AS INT) + 1 UNION ALL
SELECT CAST(2.1349 AS INT) + 1 UNION ALL
SELECT CAST(2.7910 AS INT) + 1



Grande abraço


Minha consulta é realizada através do código:
Estou utilizando o ROUND para arredondamento, mas dependendo, arredonda para mais ou menos.
Preciso que seja sempre para mais.

SELECT
n.empresa,
p.codigo_interno,
p.descricao,
ROUND(SUM(n.quantidade) / DATEDIFF('2017-08-16 23:59:59','2017-07-01 00:00:00') * 5,0) as quantidade
FROM
mov_itens_nf n
INNER JOIN
cad_produto p
ON n.codigo_produto = p.codigo
WHERE
n.Empresa = 1 AND n.Filial = 1
AND n.Data_Operacao >= '2017-07-01 00:00:00'
AND n.Data_Operacao <= '2017-08-16 23:59:59'
AND n.CFOP > 5000
AND n.Cancelado <> 'S'
AND p.inativo = 'N'
GROUP BY n.codigo_produto;
Responder

24/08/2017

Fabiano Carvalho

Acredito que voce irá ter que criar uma função para arredondar sempre pra mais.
Caso tenha dúvidas retorne, que é uma explicação um pouco extensa.
Responder

24/08/2017

Tiago

Acredito que voce irá ter que criar uma função para arredondar sempre pra mais.
Caso tenha dúvidas retorne, que é uma explicação um pouco extensa.


Olá, tenho dúvidas quanto a criação da função que citou.
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar