MySQL作為一款流行的關系型數據庫管理系統,廣泛應用于各個領域。在大學教育中,我們也使用MySQL來管理學生的各科成績。對于學生來說,他們最關心的就是自己的排名。我們可以通過編寫SQL語句來查詢不同科目的排名。
SELECT student_name, subject, score, (@rank := IF(@prevSubject = subject, @rank + 1, 1)) AS rank, (@prevSubject := subject) FROM scores, (SELECT @prevSubject := NULL, @rank := 0) AS init ORDER BY subject ASC, score DESC;
以上代碼可以查詢出各科分數排名。我們可以通過修改ORDER BY語句,來實現其他排列方式。比如按照總成績排名:
SELECT student_name, subject, @scoreA:=IF(subject = 'Math', score, @scoreA) AS Math, @scoreB:=IF(subject = 'English', score, @scoreB) AS English, @scoreC:=IF(subject = 'Science', score, @scoreC) AS Science, @sum:=@scoreA+@scoreB+@scoreC AS total, (@rank := IF(@prevTotal = total, @rank + 1, 1)) AS rank, (@prevTotal := total) FROM scores, (SELECT @prevTotal := NULL, @rank := 0, @scoreA := 0, @scoreB := 0, @scoreC := 0) AS init ORDER BY total DESC;
以上代碼可以查詢出各科總分排名。
通過MySQL,我們可以輕松地查詢各科排名,這對于學生和教師來說都是一個非常方便的工具。