【问题标题】:how to generate rank from mark php?如何从标记 php 生成排名?
【发布时间】:2015-12-04 11:52:01
【问题描述】:

在我的 php 项目中,我必须在考试后上传学生分数并通过生成排名来显示结果。上传分数时,如果学生缺席,分数字段值将添加为“缺席”。所以在生成排名列表时, 这些学生的排名列表示为“缺席”。但是当我使用以下代码标记表示为“缺席”时,排名为 1。

如何解决这个问题?我正在使用数据表

 SELECT SQL_CALC_FOUND_ROWS student_id as sl,student_rollno, student_name, school_name as student_school,mark_mark,
 FIND_IN_SET( mark_mark, (
SELECT GROUP_CONCAT( mark_mark
ORDER BY mark_mark DESC ) 
FROM mark )
)            
 as student_rank FROM student  JOIN class ON student_class=class_id JOIN school ON student_school=school_id  JOIN mark ON mark_student=student_id WHERE student_status=1        LIMIT 0, 1000

【问题讨论】:

    标签: php mysql


    【解决方案1】:

    这意味着您必须在 group_concat 的 order by 子句中更改值“Absent”的权重:GROUP_CONCAT( mark_mark ORDER BY IF(mark_mark='Absent', '0', mark_mark) DESC )

    我使用字符串“0”是因为我假设其他标记是数字。如果这个假设不正确,那么使用任何比你的最低分数等级低的字符串或数值。

    虽然,我会考虑从列表中完全忽略缺席的学生,但我不了解业务需求。

    【讨论】:

    • 我需要“缺席”学生将列列为“缺席”
    • 你能详细说明一下吗?我不建议更改缺席值。
    猜你喜欢
    • 2019-06-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-28
    • 2014-07-08
    相关资源
    最近更新 更多