表:
userid username address english math class
1 张晓明 上海 70 87 1
2 黄晓明 上海 69 100 1
3 黄大明 上海 100 87 2
4 叶晓明 上海 80 90 2
要求:
获取每个班英语得分、数据得分最高的学生,并且在此基础上过滤姓名以黄开头的学生;
英语得分的重要性被数学得分的重要性高,如 a英语100,数学0,b用户英语90,数学90;这时选a用户,假如英语成绩一样才比较数学成绩;
userid username address english math class
1 张晓明 上海 70 87 1
2 黄晓明 上海 69 100 1
3 黄大明 上海 100 87 2
4 叶晓明 上海 80 90 2
要求:
获取每个班英语得分、数据得分最高的学生,并且在此基础上过滤姓名以黄开头的学生;
英语得分的重要性被数学得分的重要性高,如 a英语100,数学0,b用户英语90,数学90;这时选a用户,假如英语成绩一样才比较数学成绩;
解决方案
40
大致写法, 没装调试环境, 见谅.
SELECT t1.*, (SELECT COUNT(*)+1 FROM tbl01 WHERE userid=t1.userid AND (english > t1.english or (english=t1.english and math > t1.math))) AS g_id FROM tbl01 t1 where username not regexp "^[黄]"