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

Làm cách nào để xếp hạng các giá trị mảng với các giá trị trùng lặp và bỏ qua một số vị trí nếu có sự ràng buộc?

Tôi giả sử rằng các điểm đã được sắp xếp theo cơ sở dữ liệu, nếu không, hãy sử dụng sort($grades); .

Mã:

$grades = array(92, 84, 84, 84, 83, 65, 41, 38, 38, 37);
$occurrences = array_count_values($grades);
$grades = array_unique($grades);
foreach($grades as $grade) {
    echo str_repeat($grade .' - '.($i+1).'<br>',$occurrences[$grade]);
    $i += $occurrences[$grade];
}

Kết quả:

92 - 1
84 - 2
84 - 2
84 - 2
83 - 5
65 - 6
41 - 7
38 - 8
38 - 8
37 - 10

CHỈNH SỬA (Trả lời cho cuộc thảo luận bên dưới)

Rõ ràng, trong trường hợp trận hòa xảy ra ở điểm thấp nhất,
thứ hạng của tất cả các điểm thấp nhất phải bằng tổng số điểm.

Mã:

$grades = array(92, 84, 84, 84, 83, 65, 41, 38, 37, 37);
$occurrences = array_count_values($grades);
$grades = array_unique($grades);
foreach($grades as $grade) {
    if($grade == end($grades))$i += $occurrences[$grade]-1;
    echo str_repeat($grade .' - '.($i+1).'<br>',$occurrences[$grade]);
    $i += $occurrences[$grade];
}

Kết quả:

92 - 1
84 - 2
84 - 2
84 - 2
83 - 5
65 - 6
41 - 7
38 - 8
37 - 10
37 - 10


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Sao chép dữ liệu từ bảng này sang bảng khác. Cơ sở dữ liệu khác nhau và cấu trúc bảng cũng khác

  2. Làm thế nào để thực thi hai truy vấn mysql làm một trong PHP / MYSQL?

  3. Làm việc với MyISAM trong MySQL

  4. Sự cố cài đặt mysql-python (trên mac os x lion)

  5. Chọn mục nhập ngẫu nhiên từ Cơ sở dữ liệu MySQL