how to get rank number that group by a column I spend hours trying to solve this, but I can't.

Well, I simply have a table call invoices

I have data like this



I want to know each customer rank by their total sum

How can I archive this?
You can use a variable for this purpose.




select customer_id, total, rank
from (
      select customer_id, total, @rank := @rank + 1 as rank
      from (
            select customer_id, sum(total) total
            from   invoices
            group by customer_id
            order by sum(total) desc
           ) t1, (select @rank := 0) t2
     ) t3
where customer_id = 1;



customer_id | total | rank
----------: | ----: | ---:
          1 | 14080 |    2



dbfiddle here