Comment réorganiser les lignes pour s'adapter au mieux dans les groupes?
Question
J'ai classé un tableau avec la méthode introduite ici Pour classer mes articles aux dossiers avec une taille limite de 100.
mixing_order id num_items cat order_in_cat cumulative_sum folder
1 1 4 1 1 4 1
2 2 33 1 2 37 1
3 3 74 2 1 74 2
4 4 41 1 3 41 3
5 5 24 1 4 65 3
6 6 44 2 2 44 4
7 7 16 1 5 57 4
8 8 55 1 6 55 5
9 9 11 1 7 66 5
10 10 37 1 8 37 6
Maintenant, je veux aller plus loin et réorganiser les lignes pour mieux s'adapter dans les dossiers. Considérez que les enregistrements sont de deux catégories (indiqué par la colonne cat
). Nous pouvons mieux ajuster simplement en modifiant le order of mixing
. Ensuite, nous pouvons produire le tableau suivant car chaque dossier a un cumulative_sum
Près de la limite de taille du dossier (c'est-à-dire 100 ici). Comme vous pouvez le voir, l'ordre dans chaque catégorie (order_in_cat
) n'a pas été modifié, seulement l'ordre selon lequel les lignes de différentes catégories sont mitigées.
mixing_order id num_items cat order_in_cat cumulative_sum folder
1 1 4 1 1 4 1
2 2 33 1 2 37 1
3 4 41 1 3 78 1
4 3 74 2 1 74 2
5 5 24 1 4 98 2
6 7 16 1 5 16 3
7 8 55 1 6 67 3
8 9 11 1 7 78 3
9 6 44 2 2 44 4
10 10 37 1 8 81 4
En d'autres termes, le mixing_order
était aléatoire dans l'ordre de INSERT
, mais maintenant nous voulons réorganiser le mixing_order
pour mieux adapter dans le dossier.
Nous avons probablement besoin d'une boucle dans laquelle se ré-calcul SUM
pour trouver le meilleur match parmi les choix possibles, mais je ne sais pas comment mener une telle boucle dans SQL
.
Pas de solution correcte