Summe verschiedener Einträge berechnen
neusserin
- datenbank
0 Encoder0 neusserin0 MudGuard
0 neusserin0 Vinzenz Mai0 neusserin
0 Vinzenz Mai
Hallo zusammen,
ich habe in einer Tabelle Geldbeträge gespeichert.
Die Tabelle ist so aufgebaut:
id | event_id | player_id |status |penalty | free_taxes | status_taxes
Nun ist für jeden player, für jedes event ein penalty (Strafgeld) eingetragen.
Ich möchte nun alle Strafgelder ,aller Spieltage, eines Spielers summieren, und dann nach der jeweiligen Höhe eine Tabelle erstellen.
Bsp.:
1. Spieler 1 25.50€
2. Spieler 2 20.50€
3. Spieler 4 15.50€
4. Spieler 3 12.50€
Das summieren stellt ja kein Problem da, aber ich weiss halt nicht, wie ich nur für jeden Spieler addiere, nicht alle Strafgelder
Wäre nett wenn mir da jmd helfen könnte.
Danke und lieben Gruß
Neusserin
Das summieren stellt ja kein Problem da
Also nicht?
aber ich weiss halt nicht, wie ich nur für jeden Spieler addiere
Also doch :-)
Gruppiere nach den Spielern und dann SUM(...)
Erstmal Lieben Dank,
funktioniert fast so wie ich es gern hätte.
Ein Problem habe ich nun noch, die Beträge haben höchstens 2 Nachkommastellen, mysql gibt mir aber mehr aus, welche auch leicht abweichen.
Bsp normal(manuell errechnet):
22.50
Bsp. MySQL:
22.4999995231628
Gibt es da irgendwie sowas wie ein Rundung-Bug bei MySQL ?
Der datentyp der Felder ist bei mir Float.
Wär nett wenn man noch ein bisschen Hilfe für mich überhätte
Gruß
die Neusserin
Hi,
22.50
Bsp. MySQL:
22.4999995231628
Willkommen in der Welt der numerischen Mathematik.
Gibt es da irgendwie sowas wie ein Rundung-Bug bei MySQL ?
Manche Dezimalzahlen sind nicht exakt als binäre Float-Zahlen darstellbar.
Das hat nichts mit MySQL zu tun, das passiert bei vielen Programmiersprachen.
Wär nett wenn man noch ein bisschen Hilfe für mich überhätte
Wie wär's mit Runden auf 2 Stellen?
Oder die Beträge in der Datenbank in Cent ablegen (und dann mit integer-Arithmetik operieren)
cu,
Andreas
Manche Dezimalzahlen sind nicht exakt als binäre Float-Zahlen darstellbar.
Das hat nichts mit MySQL zu tun, das passiert bei vielen Programmiersprachen.
Okay, hatte sowas schonmal bei JS glaube ich.
Wie wär's mit Runden auf 2 Stellen?
Klar, dachte nur das ich vielleicht was falsch gemacht hätte. Kann man das direkt mit MySQL runden oder sollte man es mit PHP machen?
Oder die Beträge in der Datenbank in Cent ablegen (und dann mit integer-Arithmetik operieren)
Leider zu spät... (Habe schon zuviele Daten eingetragen, aber fürs nächste mal werde ich es mir merken...)
Danke Dir auf jeden Fall und wünsche noch einen schönen Abend.
Gruß
die Neusserin
Hallo,
Leider zu spät... (Habe schon zuviele Daten eingetragen, aber fürs nächste mal werde ich es mir merken...)
konvertiere Deine Spalte in den Datentyp DECIMAL, der für Deine Anforderung vorgesehen ist. Backup vorher nicht vergessen.
Freundliche Grüße
Vinzenz
Hi,
habe ich gerade schon direkt nach deiner vorhergegangenen mail gemacht, aber nun sind alle Nachkommastellen weg. Und auch wenn ich eine Kommazahl Update, wird sie gerundet.
Muss ich sie dann doch in cent-Beträge abspeichern???
Danke für Eure Mühen...
Neusserin
Hallo,
habe ich gerade schon direkt nach deiner vorhergegangenen mail gemacht, aber nun sind alle Nachkommastellen weg. Und auch wenn ich eine Kommazahl Update, wird sie gerundet.
Muss ich sie dann doch in cent-Beträge abspeichern???
nein, Du musst die Anzahl der gewünschten Nachkommastellen angeben.
Beispiel:
DECIMAL(6,2)
bedeutet insgesamt 6 Ziffern, zwei davon nach dem Dezimaltrennzeichen, d.h. den Wertebereich von
-9999.99 bis 9999.99
Die maximale Anzahl der Ziffern beim Datentyp DECIMAL in MySQL ist 65 ...
Freundliche Grüße
Vinzenz
nein, Du musst die Anzahl der gewünschten Nachkommastellen angeben.
Entschuldige, das ich mich so doof anstelle, aber ich mache das mit phpmyadmin und weiss jetzt nicht wo ich den Bereich eintragen muss.
Oder muss ich es manuell über einen ALTER-Befehl machen
Danke Dir für Deine Mühen
Neusserin
Hallo Neusserin,
Entschuldige, das ich mich so doof anstelle, aber ich mache das mit phpmyadmin und weiss jetzt nicht wo ich den Bereich eintragen muss.
TYP: DECIMAL
Länge/Set: 6,2
Besten Gruß
JOhnnY
Hallo Andreas,
22.50
Bsp. MySQL:
22.4999995231628
Willkommen in der Welt der numerischen Mathematik.
ja.
Gibt es da irgendwie sowas wie ein Rundung-Bug bei MySQL ?
Manche Dezimalzahlen sind nicht exakt als binäre Float-Zahlen darstellbar.
Das hat nichts mit MySQL zu tun, das passiert bei vielen Programmiersprachen.
Wär nett wenn man noch ein bisschen Hilfe für mich überhätte
Wie wär's mit Runden auf 2 Stellen?
Oder die Beträge in der Datenbank in Cent ablegen (und dann mit integer-Arithmetik operieren)
Nein. Natürlich nicht. Sondern den geeigneten Datentyp DECIMAL verwenden, der genau für solche Daten vorgesehen ist.
Freundliche Grüße
Vinzenz