linea - División(/) no dar mi respuesta en postgresql
linea de comandos postgresql (3)
Esta consulta redondeará el resultado al siguiente entero.
select round(dev_cost ::decimal / sell_cost + 0.5)
Tengo un software
mesa y columnas en él como dev_cost
, sell_cost
. Si dev_cost
es 16000 y sell_cost
es 7500.
¿Cómo encuentro la cantidad de software que se venderá para recuperar el dev_cost
?
He consultado como a continuación:
select dev_cost / sell_cost from software ;
Está regresando 2 como la respuesta. Pero necesitamos obtener 3, ¿verdad?
¿Cuál sería la consulta para eso? Gracias por adelantado.
Puede convertir el tipo entero en numeric
y usar la función ceil()
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 debe ser
select ceil(dev_cost::numeric/sell_cost)
from software
Sus columnas tienen tipos de enteros y la división de enteros trunca el resultado hacia cero . Para obtener un resultado preciso, deberás convertir al menos uno de los valores para flotar 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 entero más cercano usando la función ceil()
:
select ceil(dev_cost::decimal / sell_cost) from software ;
(Ver demo en SQLFiddle .)