如何找出最高的总价值

时间:2012-01-07 16:08:59

标签: php mysql

我有两张桌子(学生和标记):在student表格中,我有关于学生的信息,在marks表格中,我有关于学生所得标记的信息。现在,请您告诉我如何找出最高分来计算marks表中获得的总分数的人?

提前致谢:)

P.S。有些人可能会发现这个问题与how to find the highest value in mysql table重复,但在我的辩护中,我的问题略有不同。 :)

学生表:

studentid   student_name
 1001        Jon Bon Jovi
 1002        Charlie Sheen
 1003        Jason Statham
 ... Goes on like this

标记表:

id   studentid totalmark obtainedmark  
1     1001       20          12
2     1002       20          20
3     1003       20          15
4     1001       50          40
5     1002       50          50
6     1003       50          45     
... Goes on like this

3 个答案:

答案 0 :(得分:3)

这将返回获得最高分的总和的人:

SELECT s.studentid, s.student_name, SUM(m.obtainedmark) as c
FROM students s INNER JOIN marks m ON s.studentid = m.studentid
GROUP BY s.studentid
ORDER BY c DESC
LIMIT 1

虽然看看你的表,也许返回最高平均测试分数返回他们获得的平均百分比更有用。你可以使用以下我相信的方法做到这一点:

SELECT s.userId, s.name, AVG( ( m.obtainedmark / m.totalmark ) ) as c
FROM bnt_users s INNER JOIN bnt_user_skill_rating m ON s.userId = m.user_id
GROUP BY s.userId
ORDER BY c DESC
LIMIT 2;

答案 1 :(得分:1)

select s.studentId,s.student_name,sum(m.obtainedmark) as TotalMarks
from Student s
inner join  Marks m
on m.studentid=s.studentid
group by s.studentId,s.student_name
order by TotalMarks desc
LIMIT 1

答案 2 :(得分:0)

如果您从标记表中选择了一个结果,则按获取的标记字段(降序)对其进行排序。然后你就可以获得最高分了。

SELECT * FROM `marks` ORDER BY `obtainedmark` LIMIT 0, 1

然后,您可以使用标记表中的ID

获取学生信息