我有一个名为ExamResult
的表,其中包含以下列
studentId, Subject, Standard, Marks
并且我在表格中跟随了值
表示studentId = 1
1,maths,9,78
1,english,9,80
1,history,9,67
1,geography,9,90
表示studentId = 2
2,maths,9,68
2,english,9,83
2,history,9,70
2,geography,9,69
类似的条目,直到studentId 30
现在我想计算每个学生的百分比,并希望从表格中选择以下列的数据
studentName(from student table),Standard,Percentage(with highest percentage on top)
例如:
Amit,9,78%
Sam,9,77%
现在的问题是如何在SQL中计算这个百分比,
select stu.name,exam.standard,(what to do here) as Percentage
from Student stu
inner join ExamResult exam
on stu.Id=exam.studentId;
请帮帮我
答案 0 :(得分:1)
尝试:
SELECT stu.name, exam.standard, AVG(stu.marks) as 'Percentage'
FROM Student stu
INNER JOIN ExamResult exam
ON stu.Id=exam.studentId;
GROUP BY stu.name, exam.standard
注意:这偏向于Microsoft SQL Server的SQL风格。您没有指定您使用的是哪个版本。希望你能从这里开始工作。
答案 1 :(得分:1)
您是否使用过分组条款?
select stu.name,exam.standard, **average(marks) as Percentage**
from Student stu
inner join ExamResult exam
on stu.Id=exam.studentId
**group by stendent_id
order by Percentage desc**
答案 2 :(得分:1)
尝试使用AVERAGE功能平均得分:
select stu.name,exam.standard,AVERAGE(marks) + '%' as Percentage
from Student stu
inner join ExamResult exam
on stu.Id=exam.studentId
group by stu.name, exam.standard;
分组将每个学生/考试对视为一个单独的行,这样您的结果将为每个学生/考试组合一行,并将平均每个考试的分数作为该学生考试组合的一部分。