Bonjour,
Je dois, avec une liste données :
-Ordonner des éléments (voitures) en formant des groupes de 4 ;
-Éviter de retrouver dans un même groupe les mêmes attributs (ici, couleurs).
J'ai réussi à faire des groupes de 4, mais je ne vois pas comment éviter que dans un même groupe, on y retrouve plus de couleurs que dans un autre.
J'emploie le terme "éviter", car ça n'est pas une obligation formelle. Si j'ai 8 voitures dont 3 rouges, je peux avoir 2 voitures rouges dans le groupe 1, n'ayant pas d'autres choix.
Voici ce que j'ai fait :
J'ai comme résultat :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 select ma_table.no_voiture, ma_table.couleur, ceil(rank() over (order by DBMS_Random.Value())/4) groupe from ma_table order by groupe ;
Je travaille sous Oracle, mais je pense que la réponse n'en sera pas forcément influencée, sachant que vous l'aurez compris, la fonction DBMS_Random.Value renvoie un nombre aléatoire).
En vous remerciant d'avance, si vous aviez une idée qui pourrait m'aider.
Partager