简体   繁体   中英

Add ranking to joined tables in query

My working query is:

SELECT tulemus.liige_id, liige_v.liige_id, liige_v.Eesnimi, liige_v.Perekonnanimi, punktid, SUM(punktid) AS punktidkokku FROM tulemus 
INNER JOIN liige_v on tulemus.liige_id = liige_v.liige_id
GROUP BY tulemus.liige_id
order by punktidkokku desc

with this compound all results for user id ( liige_id) from table "tulemus", How can I add the ranking as well for the table of results?

You can add a variable for this. For a group by , I think it is better to do this using a subquery:

SELECT tv.*,
       (@rn := @rn + 1) as ranking
FROM (SELECT tulemus.liige_id, liige_v.Eesnimi, 
             liige_v.Perekonnanimi, punktid, SUM(punktid) AS punktidkokku
      FROM tulemus INNER JOIN
           liige_v
           ON tulemus.liige_id = liige_v.liige_id
      GROUP BY tulemus.liige_id
     ) tv CROSS JOIN
     (SELECT @rn := 0) vars
ORDER BY punktidkokku desc;
select *, @rank := @rank + 1 as rank
from
(
    SELECT tulemus.liige_id, 
           liige_v.liige_id, liige_v.Eesnimi, liige_v.Perekonnanimi, 
           punktid, SUM(punktid) AS punktidkokku           
    FROM tulemus 
    INNER JOIN liige_v on tulemus.liige_id = liige_v.liige_id    
    GROUP BY tulemus.liige_id
    order by punktidkokku desc
) tmp
CROSS JOIN (select @rank := 0) r

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM