0
votes

Trier les enregistrements sur plusieurs colonnes et conditions

J'ai la table ci-dessous, qui stocke le rang de personne participant à des événements respectifs.

Event_Running et Event_Jumping sont les événements et les rangs stockés. P>

| Standing | PersonID | RunningRank | JumpingRank |
|     1    |     6    |      1      |       2     |
|     2    |     4    |      9      |       3     |
|     3    |     1    |      4      |       8     |
|     4    |     3    |      5      |       0     |
|     5    |     2    |      10     |       6     |


7 commentaires

Qu'est-ce qu'un classement 0 ? quelque chose comme n'a pas fini ?


Pourquoi PERSONID 4 est-il un meilleur classement que 1? Même question pour 3 et 2


Où est la personne n ° 5?


@ ϻᴇᴛᴀʟ "Les rangs ci-dessus sont ignorés"


@CID Rank 0 serait une personne qui n'a jamais participé, PersonID 4 a un rang de saut de 3 ans, il a donc eu un meilleur rang


Comment commanderiez-vous quelqu'un qui a un rang d'exécution 9 et qui saute 3 contre quelqu'un qui a couru 3 et sautant 9?


Oui, n'en pensé pas, peut-être une après l'autre dans n'importe quel ordre.


3 Réponses :


0
votes

Vous pouvez utiliser quelque chose de similaire à celui ci-dessous

select PersonID,
       RunningRank,
       JumpingRank,
       (RunningRank + JumpingRank) as Total
from ranks
order by Total asc
limit 20;


1 commentaires

C'est tout droit, laissez-moi essayer avec les données réelles.



0
votes

Voici votre requête.

set @row_number = 0; 

select  (@row_number:=@row_number + 1) as standing, personid, event_running, event_longjump from ranks
where event_running < 20 and event_longjump < 20
order by 
    case when if(event_longjump=0,event_running ,event_longjump) < event_running
         then event_longjump else event_running end  


0 commentaires

0
votes

Vos critères de tri sont un peu vagues. Je suppose que vous voulez trier sur la base de cumulatif des rangs dans tous les événements et de son score de saut.

aussi, veuillez expliquer la position de la personne ID 3 dans votre quart forte>. Vous pouvez faire, P>

select PersonID,
       RunningRank,
       JumpingRank,
       (JumpingRank + RunningRank) as cumulativeRank
from ranks
ORDER BY cumulativeRank, JumpingRank aesc
limit 20;


4 commentaires

C'est une idée soignée, laissez-moi vérifier avec les données réelles


Veuillez m'expliquer sur la personne ID 3. Selon les commentaires sur la question, vous avez choisi ID 4 sur ID1 car son rang de saut de saut était faible. Donc, vous serez également trier contre le rang de saut. Est-ce exact?


Oui, le classement cumulatif ne fonctionnerait pas, en cas de JumpingRank: 1 et RingeRank: 19 Cette personne ne viendrait pas au sommet du conseil d'administration.


Cela fonctionnera .. Mais j'en suis sûr des critères de tri que vous utilisez ... Mon explication ci-dessus est correcte?