sql >> Databáze >  >> RDS >> Mysql

Jak mohu seřadit hodnoty pole s duplicitními hodnotami a přeskočit některé pozice, pokud existuje nerozhodný výsledek?

Předpokládám, že známky jsou již seřazeny podle databáze, jinak použijte sort($grades); .

Kód:

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

Výsledek:

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

UPRAVIT (Odpověď na diskuzi níže)

Zdá se, že v případě, že shoda nastane při nejnižším skóre,
pořadí všech nejnižších skóre by se mělo rovnat celkovému počtu skóre.

Kód:

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

Výsledek:

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


  1. Obraťte v Oracle tuto cestu z/y/x na x/y/z

  2. Jak odstranit hodnotu typu enum v postgresu?

  3. Jak přidat dny k datu v MySQL

  4. Vložte objekt binárního řetězce pythonu do objektu blob MySQL