Ich habe eine Tabelle wie folgt:Rollup Spalte für Normalized Sums (SQL) - Teil 1
object_id | vote
1 | 2
1 | -1
1 | 5
2 | 3
2 | 1
3 | 4
3 | -2
ich dieses Ergebnis will (für dieses Beispiel, object_ids 1 und 2 sind Teil einer Gruppe, die an anderer Stelle und ich bin auf der Suche für die normalized_score so dass die Summe immer 1. object_id 3 = Teil einer ungenutzten Gruppe ist.):
object_id | normalized_score
1 | 6/10
2 | 4/10
[hinzugefügt 3.05] 10 ist hier die Summe der Stimmen für object_id in (1,2). Es gibt eine ganz andere Logik, um mit der (1,2) zu kommen, ich habe nur versucht, die sauberste Frage zu stellen, so dass die Leute sich nicht um diesen Teil kümmern müssen.
[hinzugefügt 3:10 PM] Wie in den Kommentaren darauf hingewiesen, wenn das Ergebnis für eines der Objekte unter 0 ist, entsteht ein Problem. Hier ist die Regel: "Wenn die Punktzahl für eine Ergebnis-ID -x ist, UND das ist die Mindestpunktzahl für die Menge, ADD X zu allen Punkten, um die Mindestpunktzahl Null". Ich kann dies zu meiner Zeit außerhalb von SQL tun - also ist es nur ein Bonus, wenn jemand die Cahones hat, um es in SQL zu versuchen.
Wenn ich einen Selbstbeitritt mache, kann ich die Summe bekommen. Ich kann nicht herausfinden, wie man die normalisierte Summe bekommt. Idealerweise funktioniert dies sowohl in MySQL 5.x als auch in Sqlite3. Ansonsten kann ich das mit zwei getrennten Abfragen machen und die Arbeit einfach in der Nachbearbeitung erledigen.
Wo kommen die "10" her? –
Wenn die Abstimmung 10 sein soll, wie können Sie dann negative Stimmen zulassen? –
Es tut mir leid 10 ist die Summe der Stimmen wo object_id in (1,2). Ich werde die Frage aktualisieren –