Anmelden

View Full Version : aufrunden SQL



Seiten : [1] 2

sonicreducer
11-08-16, 07:46
Hallo,

möchte einen Preis auf ganze Euro (x,51 bis x,99) bzw. auf 0,5 (x,01 bis x,49) aufrunden.
Kann ich dies mit round() bewerkstelligen bzw. gibt's hier eine andere Funktion?

LG
Roman

B.Hauser
11-08-16, 07:55
Auf die nächste Ganz-Zahl laufgerundet wird mit der Funktion CEILING (oder kurz CEIL)


Select Wert, Ceil(Wert)
From YourTable ...

Wenn Du auf 50 Cent aufrunden willst, musst Du zunächst mit 2 multiplizeren, das Resultat mit CEILING aufrunfen und anschließend wieder durch 2 dividieren.


Select Wert, Ceiling(Wert * 2) / 2,0
From YourTable ...

Birgitta

malzusrex
11-08-16, 08:00
select
case when MyFeld-int(MyFeld) between 0,51 and 0,99
then int(MyFeld) + 1 else int(Myfeld) +0,5 end
from MyFile

Gruß Ronald

Nachtrag:
Wie immer.... Birgitta war schneller und mit der eleganteren Lösung

holgerscherer
11-08-16, 08:53
Wie immer.... Birgitta war schneller und mit der eleganteren Lösung

Also ich finde, so ein CASE sieht doch auch recht elegant und verständlich aus? :-)

-h

Fuerchau
11-08-16, 09:19
Die Frage ist noch, wie man mit negativen Werten umgeht.
Die Multiplikation mit einem Faktor ist schon etwas älter.
Ich hatte ca. 1986 eine Kassenanwendung für den Düsseldorfer Dutyfree-Shop programmiert in der mit verschiedenen Währungen bezahlt werden konnte.
Damit nicht ganz so viel Kleingeld zusammenkommt, wurde mit verschiedensten Rundungen auf 5/10/25/50 entsprechend mit den Faktoren 20/10/4/2 "gerundet".

B.Hauser
11-08-16, 09:24
CEILING rundet auch im negativen Bereich korrekt auf die nächste Ganzzahl auf.

Birgitta

Fuerchau
11-08-16, 10:39
Ja und nein. Der Begriff heißt ja "aufrunden" und somit wird aus -1,5 dann eben -1.
Möchte man aber -2, dann muss man mit ABS arbeiten:
ceil(abs(wert)) * sign(wert)

B.Hauser
11-08-16, 10:52
Ja und nein. Der Begriff heißt ja "aufrunden" und somit wird aus -1,5 dann eben -1.
Möchte man aber -2, ...


Dann will man auch nicht aufrunden!
Die ursprüngliche Frage war wie aufgerundet wird.

Birgitta

Fuerchau
11-08-16, 11:31
Die Standard-SQLFunktion heißt ja auch "Round()" und nicht "RoundUp()", im Sprachgebrauch sind die Begriffe "Aufrunden" und "Runden" also meist gleichbedeutend.
Ich wollte ja auch nur ein ergänzende Methode erklären, die das Runden bei negativen Werten dann auch "Abrundet". Im kaufmännischen Bereich meist nicht gewünscht, im technisch/wissenschaftlichen oder auch BI-Bereich schon mal durchaus erforderlich.

Im kaufmännischen Bereich wird da halt meist grundsätzlich mit positiven Werten und einem weiteren Kennzeichen (S/H, +/-, ...) gearbeitet um dieser Problematik und den daraus entstehenden Differenzen aus dem Weg zu gehen.

BenderD
11-08-16, 11:44
- die Funktion zum runden heißt round und hat 2 Parameter, der erste beinhaltet den Wert zum runden, der zweite die Nachkommastellen.
- gerundet wird nach dem Betrag.
- ab einer 5 in der ersten ungültigen Stelle wird aufgerundet
- darunter wird abgerundet
Beispiele:
round(1.5, 0) liefert 2
round(-1.5, 0) liefert -2
alles andere ist Quatsch!!!

D*B