Ordonare lista tip 'TOP' dupa o variabila

Buna seara, am decis sa deschid un nou subiect deoarece celalat avea alt scop.

As vrea sa fac o lista ordonata, cu pozitii. Cel care arerating-ul cel mai mare sa fie pe locul 1 si asa mai departe.

Si sa faca automat count la ‘loc’ sa nu trebuiasca sa fac eu assign echipei.

Daca ajuta cu ceva acesta este si codul pentru select.

SELECT
pbh.*,
pbt.*,
SUM(pbh.matches) AS matches_sum,
SUM(pbh.kills) AS kills_sum,
SUM(pbh.damage) AS damage_sum,
SUM(pbh.rating) AS rating_sum,
ROUND(AVG(pbh.matches), 0) as matches_avg,
ROUND(AVG(pbh.kills)) as kills_avg,
ROUND(AVG(pbh.damage)) as damage_avg,
ROUND(AVG(pbh.rating), 1) as rating_avg
FROM 
    pbmr_gamehistory as pbh,
    pbmr_teams as pbt 
WHERE
    pbh.teamid = pbt.teamid 
GROUP BY pbh.teamid

poti folosi order by rating_avg. Maybe it will work

Și desc după order by rating_avg:

SELECT
pbh.*,
pbt.*,
SUM(pbh.matches) AS matches_sum,
SUM(pbh.kills) AS kills_sum,
SUM(pbh.damage) AS damage_sum,
SUM(pbh.rating) AS rating_sum,
ROUND(AVG(pbh.matches), 0) as matches_avg,
ROUND(AVG(pbh.kills)) as kills_avg,
ROUND(AVG(pbh.damage)) as damage_avg,
ROUND(AVG(pbh.rating), 1) as rating_avg
FROM 
    pbmr_gamehistory as pbh,
    pbmr_teams as pbt 
WHERE
    pbh.teamid = pbt.teamid 
GROUP BY pbh.teamid
ORDER BY rating_avg DESC

Functioneaza, il pune pe cel cu rating cel mai mare primul, dar indiferent nu-mi pot da seama cum la loc sa puna 1. pentru primul 2. pentru al doi-lea etc…
.

Multumesc tuturor :slight_smile:

Păi de unde afișezi coloana “Loc” ?

$i = 1

i++
for loop

Afișează partea aia de cod. Sigur se mai întâmplă ceva înafară de incrementare.

Aș zice că un reverse…

Ar trebui sa faci si rank-ul echipei. Il determini pe baza scorului.

In cazul sau coloana cu scor ar putea fi rating-ul echipei. Sper ca te ajuta. Va trebui sa iei in vedere si cazul in care 2 echipe au acelasi rating.

2 Likes