Arredondamento SQL

SQL

MySQL

24/08/2017

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

Curtidas 0

Melhor post

Tiago

Tiago

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!
GOSTEI 1

Mais Respostas

Luiz Santos

Luiz Santos

24/08/2017

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
GOSTEI 0
Tiago

Tiago

24/08/2017

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;
GOSTEI 0
Fabiano Carvalho

Fabiano Carvalho

24/08/2017

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.
GOSTEI 0
Tiago

Tiago

24/08/2017

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.
GOSTEI 0
POSTAR