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

スコアが等しい場合に、学生に最高ランクを共有する場所にランクを割り当てるにはどうすればよいですか?

    2つのカウンターが必要です

    • 絶対カウンター(常に1、2、3、4、5など)。
    • ランクカウンター-1から数えますが、スコアが同じ場合は更新されません。スコアが異なるとすぐに、absolute counterで更新されます 。

    サンプルコード

    $counter = 1; // init absolute counter
    $rank = 1; // init rank counter
    
    // initial "previous" score:
    $prevScore = 0;
    while ($go = mysql_fetch_array($avg))
    {
        // get "current" score
        $score = $go['AVGFCT_10'];
    
        if ($prevScore != $score) // if previous & current scores differ
            $rank = $counter;
        // else //same // do nothing
    
        echo "Rank: {$rank}, Score: {$score}<br>";
        $counter ++; // always increment absolute counter
    
        //current score becomes previous score for next loop iteration
        $prevScore = $score;
    }
    

    出力:

    Rank: 1, Score: 97.8
    Rank: 2, Score: 96.1
    Rank: 2, Score: 96.1
    Rank: 4, Score: 90.7
    



    1. LinuxサーバーへのASP.NETWebサイトの展開

    2. QPSQLドライバーがロードされていませんQt

    3. oracle(.Netコネクタ)を使用してクエリを記述します

    4. SQLServerの再帰的自己結合