Mysql
 sql >> база данни >  >> RDS >> Mysql

Как да присвоите ранг на учениците до мястото, където споделят най-високия ранг, когато резултатите им са еднакви?

Имате нужда от два брояча

  • Абсолютен брояч (винаги 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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Mysql, преоформете данните от дълги / високи към широки

  2. ImportError:Няма модул с име connector.conversion

  3. PHP ехо връща думата „Масив“

  4. Колко значими цифри трябва да запазя в моята база данни за GPS координата?

  5. Тази SELECT заявка отнема 180 секунди, за да завърши