zoukankan      html  css  js  c++  java
  • 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;
    

      

      

     
  • 相关阅读:
    linux时间设置相关
    tcp/ip协议和http协议
    redis和memcache的比较
    How to Display Image In Picturebox in VC++ from Iplimage and Mat
    关于技术与业务的理解
    怎样写出好代码——设计原则
    怎么写出好代码——坏味道
    linux 用户管理
    浅谈ajax
    浅析闭包和内存泄露的问题
  • 原文地址:https://www.cnblogs.com/carsonzhu/p/4655573.html
Copyright © 2011-2022 走看看