Solución:
Sus columnas tienen tipos de enteros y la división de enteros trunca el resultado hacia cero. Para obtener un resultado preciso, deberá convertir al menos uno de los valores en flotante o decimal:
select cast(dev_cost as decimal) / sell_cost from software ;
o solo:
select dev_cost::decimal / sell_cost from software ;
Luego puede redondear el resultado al número entero más cercano usando el ceil()
función:
select ceil(dev_cost::decimal / sell_cost) from software ;
(Vea la demostración en SQLFiddle).
Puede convertir el tipo entero a numeric
y use ceil()
función para obtener la salida deseada
La función ceil de PostgreSQL devuelve el valor entero más pequeño que es mayor o igual que un número.
SELECT 16000::NUMERIC / 7500 col
,ceil(16000::NUMERIC / 7500)
Resultado:
col ceil
------------------ ----
2.1333333333333333 3
Entonces tu consulta debería ser
select ceil(dev_cost::numeric/sell_cost)
from software
También puede convertir su variable al tipo deseado, luego aplicar la división:
SELECT (dev_cost::numeric/sell_cost::numeric);
Puede redondear su valor y especificar el número de dígitos después del punto:
SELECT TRUNC((dev_cost::numeric/sell_cost::numeric),2);
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)