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

Licencié sous: CC-BY-SA avec attribution
Non affilié à dba.stackexchange
scroll top