Rank Scores
Write a SQL query to rank scores. If there is a tie between two scores, both should have the same ranking. Note that after a tie, the next ranking number should be the next consecutive integer value. In other words, there should be no "holes" between ranks.
+----+-------+ | Id | Score | +----+-------+ | 1 | 3.50 | | 2 | 3.65 | | 3 | 4.00 | | 4 | 3.85 | | 5 | 4.00 | | 6 | 3.65 | +----+-------+
For example, given the above Scores
table, your query should generate the following report (order by highest score):
+-------+------+ | Score | Rank | +-------+------+ | 4.00 | 1 | | 4.00 | 1 | | 3.85 | 2 | | 3.65 | 3 | | 3.65 | 3 | | 3.50 | 4 | +-------+------+
select distinct Score from Scores order by Score desc;
select
tmps.Score,(@rank := @rank + 1) as Rank
from (
select
distinct Score
from Scores
order by Score desc
) tmps,(select @rank :=0) ind;
select
lef.Score as Score,rig.Rank as Rank
from Scores lef
left join
(select
tmps.Score ,(@rank := @rank + 1) as Rank
from (select
distinct Score
from Scores order by Score desc) tmps,
(select @rank :=0) ind
) rig
on lef.Score=rig.Score order by Score desc;