Bonjour Artemus,
Concernant l'inégalité stricte, c'était en effet une erreur de ma part, merci pour la correction.
Sans cela, le dernier élément saute lors de la jointure, ce qui n'est pas vraiment gênant s'il est au délà du quota, mais gênant le reste du temps.
Dracouille devrait donc en prendre note s'il utilise la dernière requete que j'ai proposée.
C'est justement la séquence voulue dans ce cas, afin d'avoir toujours 20 lignes en cas d'égalité, ni plus ni moins.La séquence produite ne tient plus compte des égalités : 1 - 2 - 3 - 4 - 5.
En soit elle est correcte, c'est juste que c'est un rang qui tient compte en deuxième lieu (en cas d’exæquo) de la valeur idTable2.
Oui c'est possible d'obtenir le rang que tu souhaite. (visiblement 1-2-2-4-5)Je me demande si avec MySql, on peut hors "user_defined_variables", produire un résultat conforme à ce que l'on attend !
Il suffit pour cela d'adapter le count pour ne pas prendre en compte les égalités :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 select tb1.mois, tb1.idTable2, tb1.nbre, 1+ count(CASE WHEN tb2.nbre > tb1.nbre THEN 1 ELSE NULL END) as rang from sample as tb1 inner join sample as tb2 on tb2.mois = tb1.mois and tb2.nbre >= tb1.nbre group by tb1.mois, tb1.idTable2, tb1.nbre order by tb1.mois, count(*) ;
Partager