Ich habe eine Tabelle software
und Spalten als dev_cost
, sell_cost
darin. Wenn dev_cost
16000 und sell_cost
7500 ist.
Wie finde ich die Menge an Software, die verkauft werden muss, um den dev_cost
wiederherzustellen?
Ich habe wie folgt abgefragt:
select dev_cost / sell_cost from software ;
Es gibt 2 als Antwort zurück. Aber wir müssen 3 bekommen, richtig?
Was wäre die Frage dafür? Danke im Voraus.
Ihre Spalten haben ganzzahlige Typen, und die Division Ganzzahl schneidet das Ergebnis gegen Null ab . Um ein genaues Ergebnis zu erhalten, müssen Sie mindestens einen der Werte in Float oder Dezimal umwandeln :
select cast(dev_cost as decimal) / sell_cost from software ;
oder nur:
select dev_cost::decimal / sell_cost from software ;
Sie können das Ergebnis dann mit der Funktion ceil()
auf die nächste Ganzzahl aufrunden:
select ceil(dev_cost::decimal / sell_cost) from software ;
(Siehe Demo zu SQLFiddle .)
Sie können einen Ganzzahl-Typ in numeric
umwandeln und die Funktion ceil()
verwenden, um die gewünschte Ausgabe zu erhalten
Die PostgreSQL ceil-Funktion gibt den kleinsten ganzzahligen Wert zurück, der ist größer oder gleich einer Zahl.
SELECT 16000::NUMERIC / 7500 col
,ceil(16000::NUMERIC / 7500)
Ergebnis:
col ceil
------------------ ----
2.1333333333333333 3
Deine Frage sollte also sein
select ceil(dev_cost::numeric/sell_cost)
from software
Sie können Ihre Variable auch in den gewünschten Typ umwandeln und dann die Division anwenden:
SELECT (dev_cost::numeric/sell_cost::numeric);
Sie können Ihren Wert runden und die Anzahl der Nachkommastellen angeben:
SELECT TRUNC((dev_cost::numeric/sell_cost::numeric),2);
Diese Abfrage rundet das Ergebnis auf die nächste Ganzzahl
select round(dev_cost ::decimal / sell_cost + 0.5)