sql >> データベース >  >> RDS >> Mysql

mysqlのユーザーをポイントでランク付けする

    これは、変数を使用したゴードンソリューションの修正にすぎません。問題は、ランク関数がランクの動作方法ではないということです。 (学生4はランク4である必要があります)

    SQLフィドルデモ テストを改善するために生徒を追加できます。

    select er.*,
           (@rank := if(@points = points, 
                        @rank, 
                        if(@points := points,    
                           @rank + 1, 
                           @rank + 1                       
                          )
                       )                  
           ) as ranking
    from students er cross join
         (select @rank := 0, @points := -1) params
    order by points desc;
    

    出力

    | id | points | ranking |
    |----|--------|---------|
    |  1 |     80 |       1 |
    |  2 |     78 |       2 |
    |  3 |     78 |       2 |
    |  4 |     77 |       3 |
    |  5 |     66 |       4 |
    |  6 |     66 |       4 |
    |  7 |     66 |       4 |
    |  8 |     15 |       5 |
    


    1. SQL Server(T-SQL)でデータファイルのサイズを縮小する方法

    2. 同じフィールド名のMYSQL行を選択し、プレフィックスを追加する

    3. スクリプトを使用してPHPMySQLデータベース接続をテストする方法

    4. SQLServerで日時の時間部分を削除するための最良のアプローチ