我是新手,试着用不同的班级给学生打分,我的问题如下:
SELECT Branch, Grade, Section, RollNo, FIrst_Name, Father_Name, Grand_Father_Name, AverageMark, rank
FROM (
SELECT Branch, Grade, Section, RollNo, FIrst_Name, Father_Name, Grand_Father_Name, AverageMark, @curRank := IF(@prevRank = AverageMark, @curRank, @incRank) AS rank, @incRank := @incRank + 1, @prevRank := AverageMark
FROM studentsaverage p,
( SELECT @curRank :=0, @prevRank := NULL, @incRank := 1 ) r
ORDER BY AverageMark DESC
) s
突出显示的学生排名是4而不是1,因为该学生来自另一所学校,我如何解决这个问题?
发布于 2018-06-11 06:23:04
实际上我没有什么东西可以测试我的代码,但是你的代码的问题是你不能验证分支是否相同:
SELECT Branch,
Grade,
SECTION,
RollNo,
FIrst_Name,
Father_Name,
Grand_Father_Name,
AverageMark,
rank
FROM
( SELECT Branch,
Grade,
SECTION,
RollNo,
FIrst_Name,
Father_Name,
Grand_Father_Name,
AverageMark,
@curRank := IF(@curBranch = Branch ,IF(@prevRank = AverageMark, @curRank, @incRank),1) AS rank,
@incRank := @incRank + 1,
@prevRank := AverageMark,
@curBranch = Branch
FROM studentsaverage p,
(SELECT @curRank :=0, @prevRank := NULL, @incRank := 1, @curBranch := NULL) r
ORDER BY Branch, AverageMark DESC) s
https://stackoverflow.com/questions/50782376
复制相似问题