• leetcode Database3


    一、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    |
    +-------+------+
    分析:题意为 编写SQL对分数进行排序。如果两个分数相等,其排名应相同。注意在排名相等的分数之后,下一个排名的数值应该连续。换言之,排名之间不应该有“洞”(跳跃)。
    思路:使用mysql的自定义变量。
    # Write your MySQL query statement below
    select Score,Rank from 
    (
    SELECT Score,
           CASE
               WHEN @dummy <=> Score THEN @Rank := @Rank 
               ELSE @Rank := @Rank +1
        END AS Rank,@dummy := Score as dummy
    FROM
      (SELECT @Rank := 0,@dummy := NULL) r,
         Scores
    ORDER BY Score DESC
    ) AS C
    

    或者:

    # Write your MySQL query statement below
    SELECT Scores.Score, COUNT(Ranking.Score) AS RANK
      FROM Scores
         , (
           SELECT DISTINCT Score
             FROM Scores
           ) Ranking
     WHERE Scores.Score <= Ranking.Score
     GROUP BY Scores.Id, Scores.Score
     ORDER BY Scores.Score DESC;
    

      

      

     
  • 相关阅读:
    java2: HttpClient,实现登录,请求等操作,session保持
    bat使用1
    java4: 读取配置文件
    HTML+CSS学习笔记(一)
    第1章:JavaScript简介
    第2章:在HTML中使用JavaScript
    HTML+CSS学习笔记(二)
    ASP.NET防止页面刷新的方法
    上下左右无空隙不间断图片连续滚动代码
    SQL Server2005新加的功能排名函数
  • 原文地址:https://www.cnblogs.com/carsonzhu/p/4655573.html
Copyright © 2020-2023  润新知