J'ai une table software
et des colonnes en tant que dev_cost
, sell_cost
. Si dev_cost
est 16000 et sell_cost
est 7500.
Comment trouver la quantité de logiciels à vendre pour récupérer le dev_cost
?
J'ai demandé comme ci-dessous:
select dev_cost / sell_cost from software ;
Il retourne 2 comme réponse. Mais nous devons obtenir 3, non?
Quelle serait la requête pour cela? Merci d'avance.
Vos colonnes ont des types entiers et la division entier tronque le résultat vers zéro . Pour obtenir un résultat précis, vous devez convertir au moins une des valeurs en flottant ou décimal :
select cast(dev_cost as decimal) / sell_cost from software ;
ou juste:
select dev_cost::decimal / sell_cost from software ;
Vous pouvez ensuite arrondir le résultat au nombre entier le plus proche à l'aide de la fonction ceil()
:
select ceil(dev_cost::decimal / sell_cost) from software ;
(Voir démo sur SQLFiddle .)
Vous pouvez convertir le type entier en numeric
et utiliser ceil()
function pour obtenir le résultat souhaité.
La fonction ceil de PostgreSQL renvoie la plus petite valeur entière que est supérieur ou égal à un nombre.
SELECT 16000::NUMERIC / 7500 col
,ceil(16000::NUMERIC / 7500)
Résultat:
col ceil
------------------ ----
2.1333333333333333 3
Donc, votre requête devrait être
select ceil(dev_cost::numeric/sell_cost)
from software
Cette requête arrondira le résultat au prochain entier
select round(dev_cost ::decimal / sell_cost + 0.5)