J'ai une table comme ceci:Rollup colonne pour Sums Normalisé (SQL) - Partie 1
object_id | vote
1 | 2
1 | -1
1 | 5
2 | 3
2 | 1
3 | 4
3 | -2
Je veux que ce résultat (pour cet exemple particulier, object_ids 1 et 2 font partie d'un groupe, défini ailleurs , et je suis à la recherche de la normalized_score sorte que la somme = toujours 1. object_id 3 fait partie d'un groupe non utilisé).
object_id | normalized_score
1 | 6/10
2 | 4/10
[ajouté 15:05] 10 ici est la somme des voix pour object_id dans (1,2). Il y a tout un ensemble de logique pour arriver à la (1,2), j'essayais juste de donner la question la plus propre pour que les gens n'aient pas à s'inquiéter de cette partie.
[ajouté 15h10] Comme indiqué dans les commentaires, si le score d'un des objets est inférieur à 0, un problème se pose. Voici la règle, "SI le score pour tout result_id est -x, ET c'est le score minimum pour l'ensemble, AJOUTER x à tous les scores afin de mettre à zéro le score minimum". Je peux le faire pendant mon temps libre en dehors de SQL - donc c'est un bonus seulement si quelqu'un a les cahones pour essayer de le résoudre en SQL.
Si je fais une jointure, je peux obtenir la somme. Je n'arrive pas à comprendre comment obtenir la somme normalisée. Idéalement, cela fonctionnera à la fois dans MySQL 5.x et Sqlite3. Sinon, je peux le faire avec deux requêtes distinctes et faire le travail en post-traitement.
Où le «10» entre-t-il dans les choses ici? –
Si le vote est censé être sur 10 alors comment pouvez-vous permettre des votes négatifs? –
Je suis désolé 10 est la somme des votes où object_id dans (1,2). Je vais mettre à jour la question –