【问题标题】:How to add scores like 'A','B','C' with mySQL如何使用 mySQL 添加诸如“A”、“B”、“C”之类的分数
【发布时间】:2013-08-18 09:49:51
【问题描述】:

你好,我想问一些事情

如何使用 mysql QUERY 添加 A B C D 之类的分数

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

如果 percent = 0 得分 A,如果 percent = 1 到 20 得分 B

有什么想法吗?

【问题讨论】:

标签: php mysql codeigniter model


【解决方案1】:

你在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);
}

【讨论】:

  • 我认为您可能需要为 A 只是 0 和 B 1 及以上做一个特殊情况。
  • @JoachimIsaksson 确实,你是对的,我解决了这个问题。谢谢!
  • 非常感谢,出色的回答:-)
【解决方案2】:

如果您必须在查询中这样做,请使用CASE

请注意,这些案例的处理方式与if...elseif 结构的处理方式相同,因此您不需要明确说明范围(即我在=100 之后完成了&gt;80,所以'F' 只有在=100 没有通过时才会被选中。即&gt;80&lt;&gt; 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 ...

【讨论】:

  • 谢谢我喜欢用这个
猜你喜欢
  • 1970-01-01
  • 2021-04-09
  • 1970-01-01
  • 1970-01-01
  • 2022-06-14
  • 1970-01-01
  • 1970-01-01
  • 2017-04-19
  • 2020-12-25
相关资源
最近更新 更多