neusserin: Summe verschiedener Einträge berechnen

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

  1. 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(...)

    1. 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

      1. 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

        --
        Warum nennt sich Andreas hier MudGuard?
        O o ostern ...
        Fachfragen per Mail sind frech, werden ignoriert. Das Forum existiert.
        1. 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

          1. 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

            1. 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

              1. 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

                1. 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

                  1. 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

        2. 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