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 :

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
;
J'ai comme résultat :
Nom : ttt.PNG
Affichages : 237
Taille : 5,2 Ko


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.