Heim > Datenbank > MySQL-Tutorial > Wie kann ich das Ergebnis der Ganzzahldivision in PostgreSQL korrekt berechnen, um eine Kürzung zu vermeiden?

Wie kann ich das Ergebnis der Ganzzahldivision in PostgreSQL korrekt berechnen, um eine Kürzung zu vermeiden?

DDD
Freigeben: 2024-12-17 10:39:24
Original
194 Leute haben es durchsucht

How Can I Correctly Calculate the Result of Integer Division in PostgreSQL to Avoid Truncation?

Division ( / ) falsch berechnet in PostgreSQL

Sie stoßen auf ein Divisionsproblem in PostgreSQL, bei dem eine Ganzzahldivision zu einer ungenauen Antwort führt. Lassen Sie uns in den Hintergrund eintauchen und eine Lösung bereitstellen, die das Problem angeht.

Grundlegendes zur Ganzzahldivision

Die Ganzzahldivision, gekennzeichnet durch „/“, schneidet den Quotienten in Richtung Null ab. Das bedeutet, dass bei der Division zweier Ganzzahlen das Ergebnis auf die nächste ganze Zahl abgerundet wird.

Im gegebenen Beispiel sind „dev_cost“ und „sell_cost“ beide ganze Zahlen. Daher gibt die Abfrage „select dev_cost / sale_cost“ 2 zurück, was dem ganzzahligen Äquivalent von 16000 dividiert durch 7500 entspricht. Sie benötigen jedoch die Menge an Software, um die dev_cost wiederherzustellen, die 3 beträgt.

Lösung des Berechnungsproblems

Um den genauen Wert zu erhalten, müssen wir sicherstellen, dass mindestens ein Operand in die Division ist ein Gleitkomma- oder Dezimalwert. Dies verhindert das Abschneiden und führt zu einem gebrochenen Quotienten.

Eine Lösung besteht darin, eine der Spalten mit dem „CAST“-Operator in eine Dezimalzahl umzuwandeln:

select cast(dev_cost as decimal) / sell_cost from software ;
Nach dem Login kopieren

Eine andere Alternative ist die Verwendung von „::decimal“-Syntax zum Umwandeln der dev_cost-Spalte:

select dev_cost::decimal / sell_cost from software ;
Nach dem Login kopieren

Beide dieser Ansätze geben einen Gleitkommawert zurück Ergebnis, das die genaue Menge der benötigten Software darstellt.

Aufrunden auf die nächste ganze Zahl

Wenn Sie das Ergebnis auf die nächste ganze Zahl runden möchten, die die Mindestmenge darstellt Wenn Sie Software benötigen, um die dev_cost wiederherzustellen, können Sie die Funktion „CEIL“ verwenden:

select ceil(dev_cost::decimal / sell_cost) from software ;
Nach dem Login kopieren

Dadurch wird das Dezimalergebnis auf die nächste ganze Zahl aufgerundet Anzahl, um sicherzustellen, dass genügend Software verkauft wird, um die Entwicklungskosten zu decken.

Das obige ist der detaillierte Inhalt vonWie kann ich das Ergebnis der Ganzzahldivision in PostgreSQL korrekt berechnen, um eine Kürzung zu vermeiden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage