1

こんにちは 聞きたいことがあります

mysql QUERY で ABCD のようなスコアを追加する方法

SELECT dcm_peserta.nm1, COUNT(siswa.nis) as jml, ROUND(dcm_peserta.nm1 / COUNT(dcm_peserta.nis) * 100) as percent

        /* add SELECT for scoring here */
FROM dcm_peserta, siswa
WHERE siswa.id_kelas = dcm_peserta.id_kelas AND dcm_peserta.id_kelas = '65'
GROUP BY dcm_peserta.nis

パーセント = 0の場合はスコア A、パーセント = 1 の場合は 20 までスコア Bのように

何か案が?

4

2 に答える 2

3

で行う場合は、辞書を使用して成績を検索するだけですphp

$grades = array ( -1=>'A', 'B', 'C', 'D','E','F' );

for ($percentage=0; $percentage<=100; $percentage++) {
  $grade = $grades[floor(($percentage-1)/20)];
  echo sprintf("%s%% => %s\n", $percentage, $grade);
}
于 2013-08-16T04:19:20.993 に答える
2

クエリでそれを行う必要がある場合は、次を使用しCASEます。

ケースは構造と同じように上から下に処理されることに注意してください。そのif...elseifため、範囲について明示する必要はありません (つまり>80、 の後に処理を行った=100ので、が合格しない'F'場合にのみ が選択されます。=100であり、>80. <> 100)

SELECT ...
    CASE WHEN ROUND(dcm_peserta.nm1 / COUNT(dcm_peserta.nis) * 100) = 100 THEN 'G'
         WHEN ROUND(dcm_peserta.nm1 / COUNT(dcm_peserta.nis) * 100) > 80 THEN 'F'
         WHEN ROUND(dcm_peserta.nm1 / COUNT(dcm_peserta.nis) * 100) > 60 THEN 'E'
         WHEN ROUND(dcm_peserta.nm1 / COUNT(dcm_peserta.nis) * 100) > 40 THEN 'D'
         WHEN ROUND(dcm_peserta.nm1 / COUNT(dcm_peserta.nis) * 100) > 20 THEN 'C'
         WHEN ROUND(dcm_peserta.nm1 / COUNT(dcm_peserta.nis) * 100) > 0 THEN 'B'
         ELSE 'A'
    END AS score
FROM ...
于 2013-08-16T04:17:49.913 に答える