Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Làm thế nào để xếp thứ hạng cho các sinh viên vào nơi họ có thứ hạng cao nhất khi điểm của họ bằng nhau?

Bạn cần hai quầy

  • Bộ đếm Tuyệt đối (luôn là 1, 2, 3, 4, 5, v.v.).
  • Bộ đếm Xếp hạng - nó được tính từ 1 nhưng nếu điểm số giống nhau, nó sẽ không cập nhật. Ngay khi điểm số khác nhau, nó sẽ cập nhật với absolute counter .

Mã mẫu

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

Đầu ra:

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 lỗi khóa trùng lặp gây ra bộ khóa chia sẻ trên bản ghi chỉ mục trùng lặp?

  2. Cách tìm các từ phổ biến nhất trong cơ sở dữ liệu MySQL và tính trung bình cột thứ hai

  3. Nhiều khóa ngoại trong cùng một bảng

  4. chèn vào lựa chọn trên truy vấn mysql trùng lặp

  5. Nhà cung cấp không trả lại lỗi chuỗi ProviderManifestToken