Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Jak przypisać rangę uczniom do miejsca, w którym dzielą najwyższą rangę, gdy ich wyniki są równe?

Potrzebujesz dwóch liczników

  • Licznik absolutny (zawsze 1, 2, 3, 4, 5 itd.).
  • Licznik rang - liczy od 1, ale jeśli wyniki są takie same, nie aktualizuje się. Gdy tylko wyniki są różne, aktualizuje się za pomocą absolute counter .

Przykładowy kod

$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;
}

Wyjście:

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



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Czy możesz używać MySQL do łączenia się z samodzielną bazą danych np.? mojedane.db?

  2. MySQL CURRENT_TIMESTAMP podczas tworzenia i aktualizacji

  3. Jak tworzyć fantomowe odczyty?

  4. Python Pandy zapisują do sql z wartościami NaN

  5. Powolne asocjacje w SequelizeJS