[LeetCode] Rank Scores - SQL

来源:互联网 发布:查看ubuntu位数 编辑:程序博客网 时间:2024/06/05 05:16

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    |+-------+------+
# Write your MySQL query statement belowSELECT Score, Rank FROM(  SELECT    Score,            @curRank := @curRank + IF(@prevScore = Score, 0, 1) AS Rank, @prevScore := Score  FROM      Scores s, (SELECT @curRank := 0) r, (SELECT @prevScore := NULL) p  ORDER BY  Score DESC) t;


0 0
原创粉丝点击