|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||||
|
Invité de passage
![]() Inscription : septembre 2011 Messages : 4 ![]() |
Bonjour a tous
Voici mon problème j'essaie de trouver un moyen simple de "ranké" par groupe de valeur sur une ligne j'ai identifié un mes groupe j'affecte un ID (rank) SID RID rank 1 1 1 1 2 1 1 3 1 2 1 2 2 2 2 3 1 1 3 2 1 3 3 1 4 2 3 4 3 3 4 4 3 5 2 4 5 3 4 6 1 2 6 2 2 voici la table Test Code :
Code :
merci de votre aide |
||||
|
|
00
|
|
|
#2 |
![]() ![]() |
Vous montrez du code, des données de départ, des données intermédiaires et c'est une très bonne chose.
Il manque encore la finalité de votre requête, tant en terme de données qu'en terme d'algorithme ! Vous n'avez pas précisé votre SGBD non plus, j'imagine qu'il s'agit de MS SQL-Server 2005 ou 2008.
__________________
Email : http://scr.im/waldar |
|
00
|
|
|
#3 |
|
Membre Expert
![]() Sylvain DevidalChef de projets Générix Inscription : février 2010 Messages : 1 062 ![]() |
Pour la finalité, je me suis crâmé pas mal de neuronnes pour comprendre, et effectivement, c'est bien pire à formuler...
En fait, dans la colonne "RID" on voit des successions identiques de valeurs qui se suivent pour un même SID pour des SID différents. Grmpf, super clair... Si on regarde dans son résultat attendu, en rouge, on a RID = "1, 2, 3" pour SID = 1 et SID = 3. => Ils ont le même "rank". Idem pour les autres couleurs. En fait, il cherche à identifier (et regrouper sous un même numéro de "rank") les suites identiques de valeurs de SID pour des RID différents. En gros, si SID c'est des voitures et RID des options, alors il cherche à regrouper les voitures qui ont les mêmes options sous un "rank" identique (qui serait un "pack" en marketing de voitures). (c'est fou comme un exemple concret ça aide à la comprenette |
|
|
00
|
|
|
#4 | |
|
Invité de passage
![]() Inscription : septembre 2011 Messages : 4 ![]() |
merci pour vos réponse ,
Merci a StringBuilder de m'avoir compris Citation:
![]() Désolé , j'ai oublié de préciser le SGBD, je suis sur du MS SQL-Server 2005 Mon algorithme en résumé : 1 - j'identifie les différentes combinaisons 2 - je construis ma table (pivot) 3 - je rank merci de votre |
|
|
|
00
|
|
|
#5 |
![]() ![]() |
Est-ce que le rang final a une importance ou il suffit que les même combinaisons possèdent le même rang ?
__________________
Email : http://scr.im/waldar |
|
00
|
|
|
#6 |
|
Membre confirmé
![]() Développeur informatique Inscription : octobre 2006 Messages : 181 ![]() |
Combien as tu de RID ou max(RID) ? |
|
|
00
|
|
|
#7 | ||
|
Invité de passage
![]() Inscription : septembre 2011 Messages : 4 ![]() |
je peux avoir n RID , il faut juste que la combinaison de RID pour un SID identique possède le même rang pour répondre à Waldar
le numéro de rang n'a pas d'importance la colonne rang dans mon exemple est le résultat que je veux l'inconvénient de ma solution est que je dois définir le nombre de RID groupé par SID manuellement, pour ensuite construire un tableau (rendre tous les RID possible en ligne) Code :
|
||
|
|
00
|
|
|
#8 |
|
Membre confirmé
![]() Développeur informatique Inscription : octobre 2006 Messages : 181 ![]() |
Si tu as moins d'une cinquantaine de RID incrémentés de 1 en 1,
tu pourrais avoir une clé unique de rank ( type numeric 18 ) avec : rank = somme (2 exposant RID ) groupé par SID. En gros un bit de présence par RID possible. |
|
|
10
|
|
|
#9 | ||
|
Membre Expert
![]() Sylvain DevidalChef de projets Générix Inscription : février 2010 Messages : 1 062 ![]() |
D'après le jeu d'essai, il les RID ne se suivent pas forcément et ne partent pas forcément de 1.
Donc la solution du SUM, aussi séduisante soit-elle, ne peux pas répondre au problème : 1 + 2 = 3 ; 3 = 3 => On risque de croire qu'il s'agit du même groupe alors que ce sont des valeurs différentes; En revanche, je pense que cette approche est la meilleure. Pourquoi ne pas faire un truc du genre : Code :
La seule limite, c'est qu'il ne fait pas que RID puisse avoir des valeurs trop grandes (au dela de 64, ça va commencer à être compliqué). |
||
|
|
10
|
|
|
#10 |
|
Membre confirmé
![]() Développeur informatique Inscription : octobre 2006 Messages : 181 ![]() |
C'est bien ce que je pensais avoir proposé
|
|
|
00
|
|
|
#11 |
|
Membre Expert
![]() Sylvain DevidalChef de projets Générix Inscription : février 2010 Messages : 1 062 ![]() |
Hmpf, excuse-moi, en effet, j'avais mal lu
Je croyais que partant du principe que c'était des suites "1, 2, 3" ; "1, 2, 3, 4, 5", etc. partant toujours de 1 et allant toujours de 1 en 1, tu proposais de faire un sum() tout simple. J'ai lu trop rapidement, désolé |
|
|
00
|
|
|
#12 |
|
Invité de passage
![]() Inscription : septembre 2011 Messages : 4 ![]() |
Merci a vous je vais essayer de suite
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com