Ranking mit mehreren gleichen "Punktzahlen"

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Ranking mit mehreren gleichen "Punktzahlen"

    Hi,

    kurz vor dem Fest noch ein kleines Problem, bei dem ich nicht einmal den Ansatz einer Lösung habe.

    Ich habe eine Anwendung für den Vertrieb, der bei jedem "Verkauf" einen Datensatz in eine Vertriebstabelle schreibt. Daraus habe ich mir mit einem wilden query jetzt eine Liste gemacht, der die Verkaufzahlen pro Produkt pro Mitarbeiter und Monat listet. Gehen wir davon aus, dass der Inhalt der Liste genau so in einer MySQL-Tabelle steht. Jetzt möchte ich (besser gesagt mein Chef) ein Score pro Mitarbeiter errechnen. Als Beispiel nehme ich z.B. die letzte Spalte XX_MIG. Anzahl der Mitarbeiter sind 8. Die Zahl, die dort steht, soll beim "besten Verkäufer" mit 8 multipliziert werden, der zweitbeste mit 7, usw. der mit der kleinsten Zahl bekommt also seine Zahl mit 1 multipliziert.

    Das ganze pro Spalte für jedes Produkt. Nun ist es gerade bei der letzten Spalte so, dass es die 1 sogar viermal gibt. Die Berechnung müsste lauten:

    17 * 8
    4 * 7
    1 * 5
    2 * 6
    1 * 5
    0 * 4
    1 * 5
    1 * 5

    Hat einer 'ne Idee? Berechnung über php und dann in eine Hilfstabelle wegschreiben oder gleich über das select-Statement machen.

    Wäre schön, wenn jemand mir das Streichholz im Kopf anzündet.
    Angehängte Dateien
    Zuletzt geändert von Teddyklaus; 22.12.2015, 20:50. Grund: anderes Bild

  • #2
    Zitat von Teddyklaus Beitrag anzeigen
    Hat einer 'ne Idee? ...
    Wäre schön, wenn jemand mir das Streichholz im Kopf anzündet.
    Gruppieren nach den Erfolgszahlen und anschließend die Gruppen "durchzählen". Richtige Datenbanken haben dafür Window-Funktionen, speziell RANK():
    PostgreSQL: Documentation: Window Functions
    https://docs.oracle.com/cd/B19306_01...nctions123.htm
    Transact-SQL: RANK

    Man kann wohl so etwas in MySQL-only-SQL nachbauen.
    Beispiele:
    SQL - Calculate Rank | 1Keydata
    sql - Rank function in MySQL - Stack Overflow
    Zuletzt geändert von fireweasel; 28.12.2015, 16:09.
    Klingon function calls do not have “parameters”‒they have “arguments”‒and they always win them!

    Kommentar


    • #3
      es ist logich wenn das viertebeste sich vier mal wiederholt .
      man muss andere parameter verwenden um gleiche werte zu ordnen

      Kommentar

      Lädt...
      X